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);