有时候在调试代码时,需要格式化输出JSON字符串,使其便于开发者/测试者查看,本文记录的就是使用Gson如何格式化输出JSON字符串。

Gson默认的JSON输出是紧凑的JSON格式,这意味着在输出的JSON结构中没有任何空白字符,因此,在JSON输出中,字段名及其字段值,对象字段和数组中的对象间都没有空白字符,另外“null”字段在输出时会忽略(NOTE:collections/arrays中的null值会保留)。如果要使用Pretty Print输出JSON,可以使用GsonBuilder配置JsonPrintFormatter,该格式默认会输出80字符宽度,2字符缩进,右边距为4字符。

以下是配置Gson实例使用JsonPrintFormatter替代JsonCompactFormatter,Pretty Printing输出JSON字符串的例子。

1
2
3
4
Student student = new Student(12, 1, "carya");
Gson gson2 = new GsonBuilder().setPrettyPrinting().create();
String prettyJsonStr1 = gson2.toJson(student);
System.out.println("prettyJsonStr1: " + prettyJsonStr1);

其中,Student是自定义的对象。

另外,如何利用Gson来格式化紧凑的JSON格式字符串呢?例如,如已有JSON字符串如下:{"stuNo":12,"sex":1,"name":"carya"}, 可用以下方式将其格式化。

1
2
3
4
5
Gson gson3 = new GsonBuilder().setPrettyPrinting().create();
JsonParser jp = new JsonParser();
JsonElement je = jp.parse(uglyJsonStr);
String prettyJsonStr2 = gson3.toJson(je);
System.out.println("prettyJsonStr2: " + prettyJsonStr2);

输出的JSON串如下所示:

1
2
3
4
5
prettyJsonStr2: {
"stuNo": 12,
"sex": 1,
"name": "carya"
}

参考: Gson User Guide


目前已转行教育行业,欢迎加微信交流:CaryaLiu