2016-05-02 22 views
0

こんにちは、私はJSONObject内のJSONArrayのマージに関して問題があります。以下は私のJSONObjectがどのように見えるかです:.Iはここ1 JSONObjectにそれぞれxyをマージしたかった今、私は(coords内)マージしたいものをJSONObjectsのキーを持つJAVAのJSONObject内に2つのJSONArrayをマージする

{ 
"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 ]} 
      } 
} 

私のコードされています

 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);にエラーがあります。このメソッドにアクセスすることはできません。

答えて

0

私はここに私の問題の答えを得ることができています@cihan 7の提案を1として私のソリューションです:私は実際にあなたの提案ごとにそれらをマージすることができる午前強調するため

 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); 
1

最初にリストを記入する必要があります。これらの行をforループの外に取り出してください。

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

あなたの目標を達成するために、それは浅い設計です。

+0

感謝。申し訳ありませんが、私はJavaに慣れていないので、何が最良のアプローチになる可能性があるのか​​についての最善のアプローチになるかどうかはわかりません。 – Seeker

+0

Javaでは、コレクションの構造はPHPとは全く異なります。使用しているデータ型は正確であり、特定のコードブロックのスコープには注意が必要です。あなたの目標にアプローチするために私の答えを更新します。 –

+0

私はおかげで仲間を見ます。あなたが言及したことの詳細については、Javaのデータ型を調べようとします。再度、感謝します。 – Seeker

1

上記の2行のように、最初にJSONArrayクラスにキャストする必要はありませんか?

+0

私もそれを試みたが、cihanのおかげで7私は私の答えを得ることができます。あなたのご意見をありがとうございます。 – Seeker

関連する問題