在 JAVA 中合并 JSONObject 中的两个 JSONArray
Merging Two JSONArray inside JSONObject in JAVA
您好,我有一个关于在 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, 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);
和 merged.get("y").addAll(yList);
处遇到错误,我无法访问这些方法。
您必须先填写列表,并且您应该将以下这些行从 for 循环中删除。
merged.get("x").addAll(xList);
merged.get("y").addAll(yList);
顺便说一句,实现您的目标是一个糟糕的设计。
您不需要先将其转换为 JSONArray class,就像上面两行所做的那样吗?
根据@cihan 7 的建议,我得到了我的问题的答案,这是我的解决方案:
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);
您好,我有一个关于在 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, 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);
和 merged.get("y").addAll(yList);
处遇到错误,我无法访问这些方法。
您必须先填写列表,并且您应该将以下这些行从 for 循环中删除。
merged.get("x").addAll(xList);
merged.get("y").addAll(yList);
顺便说一句,实现您的目标是一个糟糕的设计。
您不需要先将其转换为 JSONArray class,就像上面两行所做的那样吗?
根据@cihan 7 的建议,我得到了我的问题的答案,这是我的解决方案:
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);