Open coffeeZhang001 opened 7 years ago
public class ServiceResult<T> extends BaseResultDo implements Serializable { @JSONField( name = "data" ) private T data; public ServiceResult() { } public T getData() { return this.data; } public void setData(T data) { this.data = data; } } public class UnitsSaveResponse<UnitSave> extends ServiceResult<UnitSave> { public static class UnitSave implements Serializable { private SaveUnitInfo unitInfo; private List materials; public SaveUnitInfo getUnitInfo() { return unitInfo; } public void setUnitInfo(SaveUnitInfo unitInfo) { this.unitInfo = unitInfo; } public List getMaterials() { return materials; } public void setMaterials(List materials) { this.materials = materials; } } } String jsonStr = "{\"code\":201,\"data\":{\"materials\":[{\"material\":\"locale\",\"success\":true," + "\"material_id\":356,\"id\":\"5099\"}],\"unitInfo\":{\"languages\":[\"'en_US'\",\"ru_RU\"]," + "\"unitName\":\"PC_ROCKBROS\",\"sceneKey\":\"shop_activity_page\",\"domain\":\"shopcdp.aliexpress" + ".com\",\"format\":\"HTML\",\"unitId\":\"1625\",\"id\":1761,\"rootPath\":\"shopcdp\"," + "\"userId\":\"jianqing.zengjq\",\"platforms\":[\"pc\",\"mobile\"],\"status\":2}},\"success\":true}"; UnitsSaveResponse response = JsonUtil.fromJson(jsonStr, UnitsSaveResponse.class);
正如上面的使用方式,UnitsSaveResponse中的data并不能转换成正常的UnitSave类型。 不知道是怎么回事?
不过测试时发现,如果public class UnitsSaveResponse 这个改成 public class UnitsSaveResponse 又是可以正常转换的。 这里之所以想加上,可能是有点多余,不过也是为了方便调用方清楚里面的类型,还是有一些作用的。
UnitsSaveResponse<UnitSave> UnitsSaveResponse<T>
你考虑一下这两种写法。
UnitsSaveResponse extends ServiceResult 这样写可以正常转换。
UnitsSaveResponse extends ServiceResult 这样也是不能正常转换的,里面嵌套的map并不能转换成bean
正如上面的使用方式,UnitsSaveResponse中的data并不能转换成正常的UnitSave类型。 不知道是怎么回事?