【问题标题】:Parse a structured flattened json object to list of object将结构化的扁平化 json 对象解析为对象列表
【发布时间】:2015-11-30 02:33:24
【问题描述】:

我目前有一个像这样的 Json:

{  
   "data":{  
      "gatewayId":"asd",
      "records":[  
         {  
            "ms":123,
            "points":[  
               {  
                  "sensorId":"asdasd",
                  "sensorType":"asdasd",
                  "batt" : 12,
                  "kw" : 2
               },
               {  
                  "sensorId":"123",
                  "sensorType":"as123dasd",
                  "batt" : 12,
                  "kw" : 2
               }
            ]
         },
         {  
            "ms":123123,
            "points":[  
               {  
                  "sensorId":"asdasd",
                  "sensorType":"asdasd",
                  "batt" : 12,
                  "kw" : 2
               },
               {  
                  "sensorId":"123",
                  "sensorType":"as123dasd",
                  "batt" : 12,
                  "kw" : 2
               }
            ]
         }
      ]
   },
  "gatewayType":"Asdasd"
}

我的目的是将对象非规范化到 Java 中的最低级别

pojo 在哪里

class SimpleData {
private String gatewayId;
private String gatewayType;
private Long ms;
private String sensorType;
private Double batt;
private Long kw;
}

对于我现在所做的,我将 json 展平为字符串列表,如下所示。

root.gatewayType="Asdasd"
root.data.gatewayId="asd"
root.data.records[0].ms=123
root.data.records[0].points[0].sensorId="asdasd"
root.data.records[0].points[0].sensorType="asdasd"
root.data.records[0].points[0].batt=12
root.data.records[0].points[0].kw=2
root.data.records[0].points[1].sensorId="123"
root.data.records[0].points[1].sensorType="as123dasd"
root.data.records[0].points[1].batt=12
root.data.records[0].points[1].kw=2
root.data.records[1].ms=123123
root.data.records[1].points[0].sensorId="asdasd"
root.data.records[1].points[0].sensorType="asdasd"
root.data.records[1].points[0].batt=12
root.data.records[1].points[0].kw=2
root.data.records[1].points[1].sensorId="123"
root.data.records[1].points[1].sensorType="as123dasd"
root.data.records[1].points[1].batt=12
root.data.records[1].points[1].kw=2

我在想是否有任何逻辑或库可以将上面的字符串列表解析为 SimpleData 对象列表?


对不起,我的问题可能不清楚,我找到了一种更简单的方法来解决问题。 但我需要一个库来非规范化 json。

例如,如果 json 是:

{
"a" : "1",
"b" : ["2", "3"]
} 

会变成

[
{
"a" : "1",
"b" : "2"
},
{
"a" : "1",
"b" : "3"
}
]

【问题讨论】:

    标签: java json parsing


    【解决方案1】:

    我相信Gson 库是您正在寻找的。它提供了将 Json 数组转换为简单 Java 对象的简单方法,反之亦然。非常方便,由 Google 开发。

    【讨论】:

      【解决方案2】:

      我推荐fastjson,它非常快速且非常易于使用。在您的情况下,您只需在结构中将 POJO 定义为 JSON 数据并将 JSON 解析为 Object。它是由阿里巴巴创建的。

      【讨论】:

        猜你喜欢
        • 2021-12-01
        • 2016-05-17
        • 2011-02-10
        • 1970-01-01
        • 1970-01-01
        • 2019-11-26
        • 1970-01-01
        • 2011-11-15
        相关资源
        最近更新 更多