toString()在Android中将内部JSONArray转换为字符串

toString()在Android中将内部JSONArray转换为字符串,android,json,Android,Json,我正在创建一个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(ne

我正在创建一个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();
但事实是:

{
  "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对象unitsummary添加到for循环中

您可以创建一个JSON数组unitsummarydetail并将所有JSON对象unitsummary添加到for循环中

使用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();
JSONObject请求=新建JSONObject();
请求。提交(“ID”、“35”);
请求。输入(“密码”、“密码”);
JSONArray字段列表=新的JSONArray();
对于(int i=0;i<3;i++){
fieldList.put(新的JSONObject().put(“unitid”,“unitid”+i).put(“price”,“price”+i));
}
put(“unitsummary”,new JSONObject().put(“unitsummarydetail”,fieldList));
String requestString=request.toString();
输出:

{“ID”:“35”,“password”:“password”,“unitsummary”:{“unitsummarydetail”:[{“unitid”:“unitid”:” 0,“价格”:“价格0”},{“unitid”:“unitid 1”,“价格”:“价格” 1“},{“unitid”:“unitid 2”,“价格”:“价格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();
JSONObject请求=新建JSONObject();
请求。提交(“ID”、“35”);
请求。输入(“密码”、“密码”);
JSONArray字段列表=新的JSONArray();
对于(int i=0;i<3;i++){
fieldList.put(新的JSONObject().put(“unitid”,“unitid”+i).put(“price”,“price”+i));
}
put(“unitsummary”,new JSONObject().put(“unitsummarydetail”,fieldList));
String requestString=request.toString();
输出:

{“ID”:“35”,“password”:“password”,“unitsummary”:{“unitsummarydetail”:[{“unitid”:“unitid”:” 0,“价格”:“价格0”},{“unitid”:“unitid 1”,“价格”:“价格” 1“},{“unitid”:“unitid 2”,“价格”:“价格2”}]}


您的第一个json格式无效您的fieldList是simple list将其转换为JSONArray您的第一个json格式无效您的fieldList是simple list将其转换为JSONArray
request.put("unitsummary", new JSONObject()
   .put("unitsummarydetail", new JSONArray(fieldList)));
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();