问题描述

项目中需要对json字符串进行格式化,便于查看.

原始格式:

[{"id":1,"name":"Task1"},{"id":2,"name":"Task2"}]

目标格式:

[
{
"id": 1,
"name": "Task1"
},
{
"id": 2,
"name": "Task2"
}
]

解决方案

一、采用Fastjson

  1. 添加依赖
implementation "com.alibaba:fastjson:1.2.58"

  1. 格式化函数
import com.alibaba.fastjson.JSON
import com.alibaba.fastjson.JSONObject
//格式化字符串
fun formatJson(content: String): String {
val jsonObject = JSONObject.parse(content)
return JSON.toJSONString(jsonObject,true)
}
//格式化对象
fun formatJson(content: Any): String {
val json = JSON.toJSON(content) as JSONObject
return JSON.toJSONString(json,true)
}

二、采用Gson

  1. 添加依赖
implementation "com.google.code.gson:gson:2.8.5"

  1. 格式化函数
import com.google.gson.GsonBuilder
import com.google.gson.JsonParser
//格式化字符串
fun formatJson(content: String): String {
val gson = GsonBuilder().setPrettyPrinting().create()
val jsonElement = JsonParser().parse(content)
return gson.toJson(jsonElement)
}
//格式化对象
fun formatJson(content: Any): String {
val gson = GsonBuilder().setPrettyPrinting().create()
return gson.toJson(content)
}

三、采用Jackson

  1. 添加依赖
implementation "com.fasterxml.jackson.core:jackson-core:2.9.9"
implementation "com.fasterxml.jackson.core:jackson-databind:2.9.9"

  1. 格式化函数
import com.fasterxml.jackson.databind.ObjectMapper
//格式化字符串
fun formatJson(content: String): String {
val mapper = ObjectMapper()
val json = mapper.readValue(content, Any::class.java)
return mapper.writerWithDefaultPrettyPrinter().writeValueAsString(json)
}
//格式化对象
fun formatJson(content: Any): String {
val mapper = ObjectMapper()
return mapper.writerWithDefaultPrettyPrinter().writeValueAsString(content)
}