我想将多个JSON对象合并到一个数组中

时间:2019-01-01 11:22:37

标签: java json type-conversion

我正在尝试将多个JSON对象组合成一个JSON数组,并可能根据数据名称(温度,压力,海拔高度)进行过滤。

我尝试使用JSON-Simple和Java,但无法正常工作。

以下是JSON的片段:

我要转换的输入:

{"temperature" : -12, "sendtimes" : 10000}
{"pressure" : 1000, "sendtimes" : 10001}
{"altitude" : 100.7, "sendtimes" : 10002}`

转换后的需求方式:

{
  "temperaturData": [
      {"temperature": -12, "sendtimes": 10000},
      {"pressure" : 1000, "sendtimes" : 10001},
      {"altitude" : 100.7, "sendtimes" : 10002},
  ]
}

由于每个能帮助我的人,我对如何做到这一点一无所知!

3 个答案:

答案 0 :(得分:1)

使用JSON Library

JSONArray arr = new JSONArray();
JSONObject obj = new JSONObject();
obj.put("temperature", "-12");
obj.put("sendtimes", "1000");

arr.put(obj);
obj = new JSONObject();
obj.put("pressure", "1000");
obj.put("sendtimes", "1001");

arr.put(obj);

JSONObject finalObj = new JSONObject();
finalObj.put("temperaturData", arr);
System.out.println(finalObj);

尽管我的建议是,您也应该将键也分配给给定的内部数组,这将使访问变得容易且无错误。

答案 1 :(得分:0)

要实现的目标非常简单。我正在使用JavaScript,其他任何使用相似数据结构的语言也可以实现同样的效果。 您要做的是创建一个数组并将值附加到该数组。

var tempData = {"temperaturData" : []}
tempData["temperaturData"].push({"temperature": -12, "sendtimes": 10000})
tempData["temperaturData"].push({"pressure" : 1000, "sendtimes" : 10001})
tempData["temperaturData"].push({"altitude" : 100.7, "sendtimes" : 10002})
JSON.stringify(tempData)

答案 2 :(得分:0)

Jatin Asija提到的

JSON库是一个非常酷和简单的JSON库,您可以绝对使用它来获取所需的内容。但是,在Java中使用JSON的实际标准是Jackson JSON库,也称为“ FasterXML / jackson”。您所需要做的就是使用ObjectMapper类及其方法readValue()writeValueAsString(Object value)来完成您想要的任何事情。 ObjectMapper的{​​{3}}很酷,这是您可能需要使用的Maven依赖项:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.datatype</groupId>
    <artifactId>jackson-datatype-jsr310</artifactId>
</dependency>

这里是ObjectMapper的{​​{3}}