我正在尝试将多个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},
]
}
由于每个能帮助我的人,我对如何做到这一点一无所知!
答案 0 :(得分:1)
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)
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}}