记一次JSON转换问题

在一次需求中要将两层泛型嵌套的json字符串进行处理,转换总是出问题,特此记录。

泛型嵌套关系:List<DataHistory<Account>>,使用的是 fastjson

数据结构:

public class DataHistory<T> implements Serializable {

    public static final long serialVersionUID = 1L;

    private String txId;
    private T value;
    private Date timeStamp;
    private boolean isDelete;

}
public class Account implements Serializable{

    public static final long serialVersionUID = 1L;

    //账户id
    private String accountId;
    //平台账户id
    private String platformId;
    //资产值
    private double score;

    private Trans trans;
    public class Trans implements Serializable{

        private static final long serialVersionUID = 1L;

        private String transAccount;
        private double amount;
        private String transType;
        private String txId;
        private String transPlatform;
    }

}

json 数据:

[{
    "timeStamp": 1525990156000,
    "txId": "d91499d6fea0de8f87ef30e985e82411a938d636f00554111b6eb7b9ee778c0b",
    "delete": false,
    "value": {
        "accountId": "wnzx0000001",
        "score": 0,
        "platformId": "wnzx0000001",
        "trans": {
            "transAccount": "wnzx0000001",
            "amount": 0,
            "transType": "init",
            "txId": "d91499d6fea0de8f87ef30e985e82411a938d636f00554111b6eb7b9ee778c0b",
            "transPlatform": "wnzx0000001"
        }
    }
},
{
    "timeStamp": 1526067619000,
    "txId": "525f1bec080f323a88c76634f8ea2a779f4ec46e44cba73bc4decf21fffff431",
    "delete": false,
    "value": {
        "accountId": "wnzx0000001",
        "score": 80,
        "platformId": "wnzx0000001",
        "trans": {
            "transAccount": "89bd9d9e-b4c4-4da8-b3b6-91cf14099b71",
            "amount": 80,
            "transType": "read",
            "txId": "",
            "transPlatform": ""
        }
    }
}]

转换代码:

List<DataHistory> datas = JSON.parseArray(result, DataHistory.class);
for (DataHistory his : datas) {
    JSONObject obj = (JSONObject)his.getValue();
    Account account = JSON.parseObject(obj.toJSONString(), Account.class);
    if (transType.equals(account.getTrans().getTransType())){
        //res.add(his);
    }
}

猜你喜欢

转载自blog.csdn.net/fangdengfu123/article/details/80305250