Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JAVA中合并JSONObject中的两个JSONArray_Java_Json_Merge_Array Merge_Json Simple - Fatal编程技术网

在JAVA中合并JSONObject中的两个JSONArray

在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

您好,我有一个关于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)中出错
合并的.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的数据类型,以了解有关您所提到的内容的更多细节。再次感谢。欢迎你,伙计。我正准备写一堆类似于下面您的代码,但您是在我之前写的;)我也试过了,但多亏了慈涵七号,我才得到了答案。还是谢谢你的意见。我也试过了,但多亏了慈涵七号,我才能够得到我的答案。还是谢谢你的意见。