2017-02-17 5 views
1

に文字列として内部JSONArrayを変換します:JSONObject.toString()は以下のように私は、JSONリクエストを作成していますアンドロイド

JSONObject request = new JSONObject(); 
request.put("ID", "35"); 
    request.put("password", "password"); 
    List<JSONObject> fieldList = new ArrayList<>(); 
    for (int i = 0; i < 3; i++) { 
     fieldList.add(new JSONObject() 
       .put("unitid", "unitid " + i) 
       .put("price", "Price " + i)); 
    } 

request.put("unitsummary", new JSONObject() 
     .put("unitsummarydetail", fieldList) 
); 

String requestString = request.toString(); 

requestString変数の値は、次のようになります。

{ 
    "ID": "35", 
    "password": "password", 
    "unitsummary": { 
    "unitsummarydetail": [ 
     { 
     "price": "Price 0", 
     "unitid": "unitid 0" 
     }, 
     { 
     "price": "Price 1", 
     "unitid": "unitid 1" 
     }, 
     { 
     "price": "Price 2", 
     "unitid": "unitid 2" 
     } 
    ] 
    } 
} 

しかし、それは次のとおりです。

{ 
    "ID": "35", 
    "password": "password", 
    "unitsummary": { 
    "unitsummarydetail": "[{\"unitid\":\"unitid 0\",\"price\":\"Price 0\"}, {\"unitid\":\"unitid 1\",\"price\":\"Price 1\"}, {\"unitid\":\"unitid 2\",\"price\":\"Price 2\"}]" 
    } 
} 

それは文字列としてunitsummarydetailに変換されます。 私は試しましたが、インターネット上に同様の問題や解決策が見つかりませんでした。 私のコードに問題はありますか?これはライブラリの動作ですか?

任意のアイデアやソリューションコードスニペットを歓迎します。

ありがとうございました。あなたはすべてのJSONをunitsummarydetail JSON配列を作成して追加することができ

から

request.put("unitsummary", new JSONObject() 
    .put("unitsummarydetail", fieldList)); 

request.put("unitsummary", new JSONObject() 
    .put("unitsummarydetail", new JSONArray(fieldList))); 
+0

あなたの最初のJSON形式は –

+0

あなたのフィールドリストがJSONArray –

答えて

2

使用するためにunitsummaryオブジェクトArrayListではなくJSONArray

JSONObject request = new JSONObject(); 
request.put("ID", "35"); 
request.put("password", "password"); 
JSONArray fieldList = new JSONArray(); 
for (int i = 0; i < 3; i++) { 
fieldList.put(new JSONObject() .put("unitid", "unitid " + i)  .put("price", "Price " + i)); 
} 
request.put("unitsummary", new JSONObject() .put("unitsummarydetail", fieldList)); 
String requestString = request.toString(); 

出力:

{ "ID": "35"、 "パスワード": "パスワード"、 "unitsummary":{ "unitsummarydetail":[{ "UNITID": "UNITID "unitid": "unitid 1"、 "price": "Price 1"}、{unitid ":" unitid 2 "、" price ":" Price " 2" }]}}

2

変更あなたのコードは、ループ

+0

@Rohitグプタに変換する単純なリストでは有効ではありません。これは、それが動作します試してみてください –

関連する問題