【问题标题】:Parse json string using jaxson root value customization使用 jaxson 根值自定义解析 json 字符串
【发布时间】:2020-03-31 12:25:56
【问题描述】:

我有一个巨大的 JSON 字符串作为对休息调用的响应。 部分响应具有以下结构。 我正在使用 com.fasterxml.jackson

“historicalData”: {
     “1585573790000”: {“score”:23.54, “count”:3},
     “1585487390000”: {“score”:12.65, “count”:2}
    },
//1585573790000 -> being the epoch time

目前我想到的模型是 ArrayList 的


private class HistoricalData {
        Long epochTime;
        Double score;
        Longcount;

    }

但我无法绘制纪元时间。

【问题讨论】:

    标签: java json jackson nested


    【解决方案1】:

    您的课程 HistoricalData 与 JSON 结构不匹配。 您可以使用 Map 来匹配 JSON。

    Map<Long, HistoryData> historicalData;
    

    那么HistoryData 类将如下所示:

    class HistoryData {
        private Double score;
        private Long count;
    
        // getters & setters
    }
    

    然后你可以像这样处理地图:

    historicalData.entrySet().forEach(entry -> {
        // do something with the entry
        // entry.getKey() would return the epochTime
        // entry.getValue() would return the HistoryData object
    });
    

    但老实说如果您可以将 JSON 结构更改为:

    "historicalData": [
      { "epochTime": "1585573790000", “score”:23.54, “count”:3},
      { "epochTime": "1585487390000", “score”:12.65, “count”:2}
    ]
    

    然后你可以使用 List 类的 HistoricalData:

    private List<HistoricalData> historicalData;
    

    这个类看起来像:

    public class HistoricalData {
        private Long epochTime;
        private Double score;
        private Long count;
    
        // getters & setters
    }
    

    【讨论】:

    • 我完全同意将 JSON 结构更改为“historicalData”的观点:[ {“epochTime”:“1585573790000”,“score”:23.54,“count”:3} , { "epochTime": "1585487390000", "score":12.65, "count":2} ] 我已经提出请求,也想知道我的选择。非常感谢让我试试这个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-13
    • 2015-11-14
    • 2020-12-27
    • 2013-04-18
    • 1970-01-01
    相关资源
    最近更新 更多