如何在JSON对象中转义引号?
下面是我的制作方法,JSONObject
然后打印出JSONString
。
我正在使用Google 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();
}
目前,如果我打印出, jsonObject.toString()
那么它会像这样打印出来-
{"description":"test data","ap":"[0, 1100, 4, 1096]","bp":"[1101, 3, 6, 1098]"}
但这不是我所需要的。我想像下面这样打印出来,没有双引号ap
和bp
值。
{"description":"test data","ap":[0, 1100, 4, 1096],"bp":[1101, 3, 6, 1098]}
我不确定如何在JSONObject中转义引号?
回答:
你的问题是
jsonObject.addProperty("ap", ap.toString());
您正在添加一个属性,它是Java中的String
表示形式Set
。它与JSON无关(即使格式看起来相同)。
您将必须将其转换Set
为JsonElement
(JsonArray
确实,但您不会看到)。
在Gson
某处创建对象
Gson gson = new Gson();
并将其用于将Set
元素转换为JsonElement
对象并将其添加到中JsonObject
。
jsonObject.add("ap", gson.toJsonTree(ap));jsonObject.add("bp", gson.toJsonTree(bp));
Gson有其约定,它将a转换Set
为a
JsonArray
,它是的子类型,JsonElement
因此可以使用添加它JsonObject#add(String,
JsonElement)。
以上是 如何在JSON对象中转义引号? 的全部内容, 来源链接: utcz.com/qa/406793.html