3 回答
TA贡献1790条经验 获得超9个赞
试试下面:
JSONObject obj = new JSONObject();
obj.put("id", -12);
obj.put("title", "titlevalue");
obj.put("body", "bodyvalue");
JSONArray arr = new JSONArray();
arr.put(obj);
解释:正如 Dave 解释的那样,将字符串放在用“[”和“]”包围的字符串中,您引入了转义字符。相反,只需将创建的对象放入数组中。更好的方法是使用 GSON 或 JACKSON 进行解析,您可以在互联网上轻松找到教程。
TA贡献1853条经验 获得超9个赞
我认为您的问题可能出在以下方面:
JSONArray arr = new JSONArray("[" + obj + "]");
我怀疑此时obj
已转换为字符串,而您JSONArray
只包含一个字符串。也就是说,"[" + obj + "]"
具有调用obj.toString()
和创建传递给构造函数的单个字符串的效果。
这意味着当您将其写出时,单个字符串会转义嵌入的引号。该System.out.println(arr.toString());
实际上是误导。您没有按预期设置对象。
解决方案可能很简单:
JSONArray arr = new JSONArray();
arr.put(obj);
TA贡献1840条经验 获得超5个赞
我建议您使用 GSON 库,它非常容易将任何 java 对象转换为 JSON 字符串。
Gson gson = new Gson()
String json = gson.toJson(myObject);
添加回答
举报