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

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

谢谢。

最佳答案

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

09-30 15:16
查看更多