【问题标题】:Merging Two JSONArray inside JSONObject in JAVA在 JAVA 中将两个 JSONArray 合并到 JSONObject 中
【发布时间】:2016-08-27 03:31:21
【问题描述】:

您好,我在 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 内)。我想将 xy 分别合并到一个 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); 遇到错误,我无法访问这些方法。

【问题讨论】:

    标签: java json merge array-merge json-simple


    【解决方案1】:

    您必须先填写列表,然后将以下几行从 for 循环中取出。

            merged.get("x").addAll(xList);
            merged.get("y").addAll(yList);
    

    顺便说一句,实现目标的设计很糟糕。

    【讨论】:

    • 感谢您强调我实际上可以按照您的建议合并它们。抱歉,我是 Java 新手,所以我不确定什么是最好的方法 关于什么是最好的方法的任何建议?
    • 在java中,集合的结构与php有很大的不同。您应该准确了解您正在使用的数据类型,并注意某些代码块的范围。我将更新我的答案以实现您的目标。
    • 我明白了,谢谢一群朋友。我将尝试研究 Java 的数据类型,以获取有关您所提到内容的更多详细信息。再次感谢。
    • 欢迎您,伙计。我正准备在下面写一堆类似于你的代码,但你在我之前写了;)
    【解决方案2】:

    你不需要像上面两行那样先把它转换成 JSONArray 类吗?

    【讨论】:

    • 我也试过了,但是感谢 cihan 7 我能够得到我的答案。仍然感谢您的意见。
    【解决方案3】:

    根据@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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-21
      相关资源
      最近更新 更多