10
06月
2025
场景一:
java类中定义的属性名 和 需要反序列化的json字符 的某些或全部属性不一致,需要确认对应关系进行反序列化操作。比如
同步数据对方要求同步的数据为:
{
"yy_id": "0",
"yy_create_user_id": "bjtoon_312672",
"yy_create_user_name": "0",
"yy_create_time": "2017-01-06 15:41:26"
}
而我方所对应字段是一个实体对象
yyId,
yyCreateUserId,
yyCreateUserName,
yyCreateTime
场景二:
如果需要反序列化的json字符中某个属性以下划线开头比如_id,在进行反序列化操作时候,该属性会丢失,这是笔者在实际开发过程
中遇到的问题。
解决方案:
利用fastjson的 @JSONField(name = "name") 注解来做,轻松转换
具体代码可参考如下:
public class SalesOrderJsonObj implements Serializable {
@JSONField(name = "name")
private String name;
@JSONField(name = "_id")
private String id;
@JSONField(name = "dzkpzs__c")
private int dzkpzs__c;
}
反序列化方法:
JSONArray jsonArray = crmStandardResponse.getData().getJSONArray("dataList");
List<OrganizationObj> organizationObjs = JSON.parseArray(jsonArray.toJSONString(), OrganizationObj.class);