Java 通过多种方式格式化 JSON 字符串
通过以下方式格式化 JSON 字符串。
- Google Gson
- Alibaba fastjson
- Jackson
Google Gson
说明:Gson 使用 2 个空格作为换行后的格式转换。
引入依赖
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.9</version>
</dependency>
JSON 格式化
public static String jsonFormat(String jsonString){
if (StringUtils.isBlank(jsonString)) {
return jsonString;
}
try {
return toPrettyFormat(jsonString);
} catch (Exception e) {
try {
return toPrettyFormatArray(jsonString);
} catch (Exception e1){
return jsonString;
}
}
}
public static String toPrettyFormat(String json) {
JsonParser jsonParser = new JsonParser();
JsonObject jsonObject = jsonParser.parse(json).getAsJsonObject();
Gson gson = new GsonBuilder().setPrettyPrinting().create();
return gson.toJson(jsonObject);
}
public static String toPrettyFormatArray(String json) {
JsonParser jsonParser = new JsonParser();
JsonArray jsonArray = jsonParser.parse(json).getAsJsonArray();
Gson gson = new GsonBuilder().setPrettyPrinting().create();
return gson.toJson(jsonArray);
}
结果示例
JSON Object
>> {"name":"jue","age":30}
{
"name": "jue",
"age": 30
}
JSON Array
>> [{"name":"jue","age":30},{"name":"kai","age":12}]
[
{
"name": "jue",
"age": 30
},
{
"name": "kai",
"age": 12
}
]
Alibaba fastjson
说明:FastJson 通过 Tab 键 进行换行后的格式化。
引入依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.78</version>
</dependency>
JSON 格式化
public static String jsonFormat(String jsonString) {
try {
return toPrettyFormat(jsonString);
} catch (Exception e) {
return jsonString;
}
}
public static String toPrettyFormat(String jsonString) {
try {
JSONObject jsonObject = JSONObject.parseObject(jsonString);
return JSONObject.toJSONString(jsonObject, true);
} catch (JSONException e) {
return toPrettyFormatArray(jsonString);
}
}
public static String toPrettyFormatArray(String json) {
JSONArray jsonArray = JSONArray.parseArray(json);
return JSONArray.toJSONString(jsonArray, true);
}
结果示例
JSON Object
>> {"name":"jue","age":30}
{
"name":"jue",
"age":30
}
JSON Array
>> [{"name":"jue","age":30},{"name":"kai","age":12}]
[
{
"name":"jue",
"age":30
},
{
"name":"kai",
"age":12
}
]
Jackson
说明:Jackson 使用 2 个空格作为换行后的格式转换。
引入依赖
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.13.1</version>
</dependency>
JSON 格式化
public static String jsonFormat(String jsonString) {
try {
ObjectMapper mapper = new ObjectMapper();
Object obj = mapper.readValue(jsonString, Object.class);
return mapper.writerWithDefaultPrettyPrinter().writeValueAsString(obj);
} catch (Exception e) {
return jsonString;
}
}
普通输出:
mapper.writeValueAsString(obj);
格式化 / 美化 / 优雅的输出:
mapper.writerWithDefaultPrettyPrinter().writeValueAsString(obj);
结果示例
JSON Object
>> {"name":"jue","age":30}
{
"name" : "jue",
"age" : 30
}
JSON Array
>> [{"name":"jue","age":30},{"name":"kai","age":12}]
[ {
"name" : "jue",
"age" : 30
}, {
"name" : "kai",
"age" : 12
} ]
相关文章