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