下面是我制作JSONObject然后打印出来的方法JSONString.
我正在使用谷歌GSON.
private String generateData(ConcurrentMap<String, Map<Integer, Set<Integer>>> dataTable, int i) {
JsonObject jsonObject = new JsonObject();
Set<Integer> ap = dataTable.get("TEST1").get(i);
Set<Integer> bp = dataTable.get("TEST2").get(i);
jsonObject.addProperty("description", "test data");
jsonObject.addProperty("ap", ap.toString());
jsonObject.addProperty("bp", bp.toString());
System.out.println(jsonObject.toString());
return jsonObject.toString();
}
Run Code Online (Sandbox Code Playgroud)
目前,如果我打印出来, jsonObject.toString()那么它打印出来像这样 -
{"description":"test data","ap":"[0, 1100, 4, 1096]","bp":"[1101, 3, 6, 1098]"}
Run Code Online (Sandbox Code Playgroud)
但这不是我需要的.我想打印出来,如下面没有双引号ap和bp值.
{"description":"test data","ap":[0, 1100, 4, 1096],"bp":[1101, 3, 6, 1098]}
Run Code Online (Sandbox Code Playgroud)
我不知道如何在JSONObject中转义引号?
你的问题是
jsonObject.addProperty("ap", ap.toString());
Run Code Online (Sandbox Code Playgroud)
您正在添加一个属性,该属性是Java中的String表示形式Set.它与JSON无关(即使格式看起来相同).
你必须将你转换Set成一个JsonElement(JsonArray真的,但你不会看到).
在Gson某处创建一个对象
Gson gson = new Gson();
Run Code Online (Sandbox Code Playgroud)
并使用它将您的Set元素转换为JsonElement对象并将其添加到JsonObject.
jsonObject.add("ap", gson.toJsonTree(ap));
jsonObject.add("bp", gson.toJsonTree(bp));
Run Code Online (Sandbox Code Playgroud)
Gson有它的约定,它将a Set转换JsonArray为a子类型,JsonElement因此你可以添加它JsonObject#add(String, JsonElement).
| 归档时间: |
|
| 查看次数: |
8853 次 |
| 最近记录: |