在JAVA中合并JSONObject中的两个JSONArray
您好,我有一个关于JSONObject内JSONArray合并的问题。下面是我的JSONObject的外观:在JAVA中合并JSONObject中的两个JSONArray,java,json,merge,array-merge,json-simple,Java,Json,Merge,Array Merge,Json Simple,您好,我有一个关于JSONObject内JSONArray合并的问题。下面是我的JSONObject的外观: { "name":"sample.bin.png", "coords":{ "1":{"x":[ 974, 975],"y":[154, 155}, "3":{"x":[124, 125],"y":[529]}, "8":{"x":[2048, 2049],"y":[548, 560, 561, 562, 563, 5
{
"name":"sample.bin.png",
"coords":{
"1":{"x":[ 974, 975],"y":[154, 155},
"3":{"x":[124, 125],"y":[529]},
"8":{"x":[2048, 2049],"y":[548, 560, 561, 562, 563, 564 ]}
}
}
现在我有了我想要合并的那些JSONObject的键(在coords
内部)。我想要将x
和y
分别合并到一个JSONObject中。下面是我的代码:
String[] tokens = request().body().asFormUrlEncoded().get("coords")[0].split(","); //here i recieve the String Array Keys of the coords i want to merge
if (!image.equals("")) {
JSONObject outputJSON = getImageJSON(image); //here comes the JSON which i posted above
JSONObject coordsPack = (JSONObject) outputJSON.get("coords");
JSONObject merged = new JSONObject();
merged.put("x", new JSONArray());
merged.put("y", new JSONArray());
for (String index : tokens) {
JSONObject coordXY = (JSONObject) coordsPack.get(index);
JSONArray xList = (JSONArray) coordXY.get("x");
JSONArray yList = (JSONArray) coordXY.get("y");
merged.get("x").addAll(xList);
merged.get("y").addAll(yList);
}
System.out.println(merged);
}
但问题是我在
merged.get(“x”).addAll(xList)中出错代码>和合并的.get(“y”).addAll(yList)代码>我无法访问这些方法。您必须先填写列表,然后从for循环中取出以下几行
merged.get("x").addAll(xList);
merged.get("y").addAll(yList);
顺便说一句,这是为了实现你的目标而设计的。你必须首先填写这些列表,并且你应该从for循环中去掉以下几行
merged.get("x").addAll(xList);
merged.get("y").addAll(yList);
顺便说一句,这是为了实现你的目标而设计的。你不需要像上面两行那样先把它放到JSONArray类中吗?你不需要像上面两行那样先把它放到JSONArray类中吗?根据@cihan seven的建议,我能够得到我问题的答案,这是我的解决方案:
JSONObject coordsPack = (JSONObject) outputJSON.get("coords");
JSONObject merged = new JSONObject();
JSONArray xList = new JSONArray();
JSONArray yList = new JSONArray();
for (String index : tokens) {
JSONObject coordXY = (JSONObject) coordsPack.get(index);
xList.addAll((JSONArray) coordXY.get("x"));
yList.addAll((JSONArray) coordXY.get("y"));
}
merged.put("x", xList);
merged.put("y", yList);
System.out.println(merged);
根据@cihan seven的建议,我能够得到我问题的答案,以下是我的解决方案:
JSONObject coordsPack = (JSONObject) outputJSON.get("coords");
JSONObject merged = new JSONObject();
JSONArray xList = new JSONArray();
JSONArray yList = new JSONArray();
for (String index : tokens) {
JSONObject coordXY = (JSONObject) coordsPack.get(index);
xList.addAll((JSONArray) coordXY.get("x"));
yList.addAll((JSONArray) coordXY.get("y"));
}
merged.put("x", xList);
merged.put("y", yList);
System.out.println(merged);
谢谢你的提醒,我可以按照你的建议合并它们。对不起,我是Java新手,所以我不确定什么是最好的方法。关于什么是最好的方法有什么建议吗?在Java中,集合的结构与php有很大的不同。您应该精确地描述所使用的数据类型,并注意某些代码块的作用域。我会更新我的答案以接近你的目标。我明白了,谢谢你。我将尝试研究Java的数据类型,以了解有关您所提到的内容的更多细节。再次感谢。欢迎你,伙计。我正准备写一堆类似于下面您的代码,但您是在我之前写的;)谢谢你的提醒,我可以按照你的建议合并它们。对不起,我是Java新手,所以我不确定什么是最好的方法。关于什么是最好的方法有什么建议吗?在Java中,集合的结构与php有很大的不同。您应该精确地描述所使用的数据类型,并注意某些代码块的作用域。我会更新我的答案以接近你的目标。我明白了,谢谢你。我将尝试研究Java的数据类型,以了解有关您所提到的内容的更多细节。再次感谢。欢迎你,伙计。我正准备写一堆类似于下面您的代码,但您是在我之前写的;)我也试过了,但多亏了慈涵七号,我才得到了答案。还是谢谢你的意见。我也试过了,但多亏了慈涵七号,我才能够得到我的答案。还是谢谢你的意见。