gpt4 book ai didi

java - 如何使用 gson 正确格式化 json 字符串,在逗号后加一个空格?

转载 作者:行者123 更新时间:2023-11-30 03:10:59 26 4
gpt4 key购买 nike

在下面的代码中,我使用 gson 创建一个 json 字符串:

private String generateData(Map<String, Map<Integer, Set<Integer>>> nodeTable, int i) {
JsonObject jsonObject = new JsonObject();

Set<Integer> pp = nodeTable.get("TEXTER").get(i);
Set<Integer> sp = nodeTable.get("PETER").get(i);

// my above pp and sp variables shows correct values with one space between numbers.

jsonObject.addProperty("description", "Hello. World");
jsonObject.add("data1", gson.toJsonTree(pp));
jsonObject.add("data2", gson.toJsonTree(sp));

System.out.println(jsonObject.toString());

return jsonObject.toString();
}

当我得到 json 字符串时,我得到的结果是这样的。正如您所看到的,逗号后所有内容都彼此相邻,没有任何空格。我不想那样。

{"description":"Hello. World.","data1":[0,273,546,819,1092,559],"data2":[816,1644,1368,276]}

我希望我的 json 字符串是这样的:意思是逗号后面应该有一个空格,所以它应该如下所示。

{"description":"Hello. World.", "data1":[0, 273, 546, 819, 1092, 559], "data2":[816, 1644, 1368, 276]}

我该怎么做?

更新:-

我尝试了这个,但它不起作用:

private String generateData(Map<String, Map<Integer, Set<Integer>>> nodeTable, int i) {

GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder = gsonBuilder.setPrettyPrinting(); //Sets pretty formatting
Gson gson = gsonBuilder.create();

JsonObject jsonObject = new JsonObject();

Set<Integer> pp = nodeTable.get("TEXTER").get(i);
Set<Integer> sp = nodeTable.get("PETER").get(i);

// my above pp and sp variables shows correct values with one space between numbers.

jsonObject.addProperty("description", "Hello. World");
jsonObject.add("data1", gson.toJsonTree(pp));
jsonObject.add("data2", gson.toJsonTree(sp));

System.out.println(gson.toJson(jsonObject));

return gson.toJson(jsonObject);
}

最佳答案

JSON字符串不应该包含不需要的白字,因为在大多数情况下它是传输数据的媒介,否则会增加带宽成本(可能很小但需要考虑)并且还会解析白字客户端的空格。

但是,如果您将其格式化为打印漂亮或看起来可读,您可以使用 GsonBuilder如下图设置

GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder = gsonBuilder.setPrettyPrinting(); //Sets pretty formatting
Gson gson = gsonBuilder.create(); //Create Gson reference

System.out.println(gson.toJson(object)); //prints in pretty format

输出:

{
"a": 5,
"name": "Hello.world.",
"someOtherString": "some other string"
}
<小时/>

更新的问题:

我不确定方法参数的类型,所以在下面的示例程序中我使用了字符串,所以它确实有效。我建议你从jsonObject.add("data1", gson.toJsonTree(pp));更改至jsonObject.addProperty("data1", gson.toJson(pp)); 。这可能会解决,请告诉我。

GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder = gsonBuilder.setPrettyPrinting(); //Sets pretty formatting
Gson gson = gsonBuilder.create(); //Create Gson reference

JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("description", "Hello. World");
jsonObject.addProperty("asfaf", "New. World");
jsonObject.addProperty("asfa", "Old. World");

System.out.println(gson.toJson(jsonObject));

输出

{
"description": "Hello. World",
"asfaf": "New. World",
"asfa": "Old. World"
}

关于java - 如何使用 gson 正确格式化 json 字符串,在逗号后加一个空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33648739/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com