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

Java 如何使用gson在逗号后加一个空格来正确格式化json字符串?,java,json,gson,Java,Json,Gson,在下面的代码中,我使用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<

在下面的代码中,我使用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]}
我该怎么做

更新:-

我试过这个,但不起作用:

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);
}
私有字符串生成数据(映射节点表,int i){
GsonBuilder GsonBuilder=新的GsonBuilder();
gsonBuilder=gsonBuilder.setPrettyPrinting();//设置漂亮的格式
Gson-Gson=gsonBuilder.create();
JsonObject JsonObject=新的JsonObject();
设置pp=nodeTable.get(“TEXTER”).get(i);
设置sp=nodeTable.get(“彼得”).get(i);
//我上面的pp和sp变量在数字之间用一个空格显示正确的值。
addProperty(“description”,“Hello.World”);
添加(“数据1”,gson.toJsonTree(pp));
添加(“数据2”,gson.toJsonTree(sp));
System.out.println(gson.toJson(jsonObject));
返回gson.toJson(jsonObject);
}

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

但是,如果您将其格式化为打印美观或看起来可读,则可以使用设置,如下所示

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))
to
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"
}

json文件不需要
”之外的空格(或任何其他字符),您能详细说明为什么需要它吗?在我的例子中,一切都是一样的,我只需要添加前三行来使用GsonBuilder,然后在最后像这样使用它
gson.toJson(jsonObject)
?我已更新了我的问题。我刚刚尝试了该代码,但它不起作用?知道我做错了什么吗?我现在要尝试一下,但对于简单的测试,您可以有两个集合,其中包含一些值,看看是否对您有效。它以某种方式将
\n
添加到输出中。
{
  "description": "Hello. World",
  "asfaf": "New. World",
  "asfa": "Old. World"
}