android - JSONObject.toString() 将内部 JSONArray 转换为 Android 中的字符串

标签 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(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 转换为字符串。 我试过但没有在互联网上找到类似的问题或任何解决方案。 我的代码有什么问题还是库的行为?

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

谢谢。

最佳答案

使用 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","password":"password","unitsummary":{"unitsummarydetail":[{"unitid":"unitid 0","price":"Price 0"},{"unitid":"unitid 1","price":"Price 1"},{"unitid":"unitid 2","price":"Price 2"}]}}

关于android - JSONObject.toString() 将内部 JSONArray 转换为 Android 中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42291281/

相关文章:

java - 通过命令行添加类

java - getSupportActionBar() 返回 null

java - 用于无效 Json 字符串的 Jersey 自定义异常映射器

javascript - Youtube 数据 API 视频嵌入限制

java - 使用 2.x API 的 Android 应用程序也可以在 1.x 上运行

android - 在 RecyclerView 中使用 Urls 显示包含图像的 ParseFile

java - 使用 FTPS 从 android 传输文件到服务器

java - 通过键jsonarray获取值

asp.net - ASP.NET 的 JSON 最大长度问题

arrays - 从 postgres 表中提取 json 数组给出错误 : cannot extract elements from a scalar