如何在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]"}

但这不是我所需要的。我想像下面这样打印出来,没有双引号apbp值。

{"description":"test data","ap":[0, 1100, 4, 1096],"bp":[1101, 3, 6, 1098]}

我不确定如何在JSONObject中转义引号?

回答:

你的问题是

jsonObject.addProperty("ap", ap.toString());

您正在添加一个属性,它是Java中的String表示形式Set。它与JSON无关(即使格式看起来相同)。

您将必须将其转换SetJsonElementJsonArray确实,但您不会看到)。

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

回到顶部