2017-02-17 112 views
1

作为接着我创建一个JSON请求:JSONObject.toString()内部JSONArray转换为字符串中的Android

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转换为字符串。 我已经尝试过,但在互联网上没有找到类似的问题或任何解决方案。 在我的代码中是否有任何问题,或者这是库的行为?

欢迎任何想法或解决方案代码片段。

感谢。

+0

你的第一个JSON格式无效 –

+0

你fieldList中是简单的列表将其转换成JSONArray –

回答

2

使用JSONArray而不是ArrayList。

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 0“,”price“:”Price 0“},{”unitid“:”unitid 1“,”price“:”Price 1“},{”unitid“:”unitid 2“,”price“ 2" }]}}

2

更改代码

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

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

@Rohit古普塔:试试这个它会工作 –

0

你可以创建一个JSON阵列unitsummarydetail并添加所有的JSON的对象unitsummary for循环