2017-04-26 16 views
0

を保持し、私はこのコードJSONオブジェクトのみが最後のレコード

JSONObject output = new JSONObject(); 
JSONObject elements = new JSONObject(); 
JSONArray jsonArrayOutput = new JSONArray(); 
ArrayList<String> name = ArrayList<String>(); 

for (int i=0 ; i<name.size() ; i++){ 

    elements.put("Name", name.get(i)); 
    jsonArrrayOutput.put(elements); 
} 


output.put("Results", jsonArrrayOutput).toString(); 

を持って問題が生じた出力JSONは「名前」のArrayList何度も、いないすべての要素の唯一の最後の要素を持っているということです。 どうすれば修正できますか?

答えて

0

jsonArrayOutput に同じ名前のキーをもう一度追加して、繰り返しごとに新しいJSONObjectを作成してみてください。 例:

JSONObject output = new JSONObject(); 
JSONObject elements = new JSONObject(); 
JSONArray jsonArrayOutput = new JSONArray(); 
ArrayList<String> name = ArrayList<String>(); 

for (int i=0 ; i<name.size() ; i++){ 

    JSONObject temp = new JSONObject(); 
    temp.put("Name", name.get(i)); 
    jsonArrrayOutput.put(temp); 
} 


output.put("Results", jsonArrrayOutput).toString(); 
+0

ありがとうございます。それが解決策でした。 –

+0

@A.Simは答えを受け入れる.. – TKHN

0

ここは私のコードです。あなたのコードの問題は、elementsオブジェクトの宣言です。 elementsを変更したときはいつでも、配列に追加したelementelementが変更されます。

あなたはjsonArrayOutput

JSONObject output = new JSONObject(); 
JSONArray jsonArrayOutput = new JSONArray(); 
ArrayList<String> name = new ArrayList<>(); 

for (int i = 0; i < name.size(); i++) { 
    JSONObject elements = new JSONObject(); 
    try { 
      elements.put("Name", name.get(i)); 
      jsonArrayOutput.put(elements); 
    } catch (JSONException e) { 
      e.printStackTrace(); 
    } 
} 

try { 
    output.put("Results", jsonArrayOutput).toString(); 
    Log.i("info",output.toString()); 
} catch (JSONException e) { 
    e.printStackTrace(); 
} 

に役立ちます希望をelementオブジェクトを置く際の基準が使用されているので、これが起こります!

+0

ありがとう。問題は修正されました。 –

関連する問題