问题描述
项目中需要对json字符串进行格式化,便于查看.
原始格式:
[{"id":1,"name":"Task1"},{"id":2,"name":"Task2"}]
目标格式:
[
{
"id": 1,
"name": "Task1"
},
{
"id": 2,
"name": "Task2"
}
]
解决方案
一、采用Fastjson
- 添加依赖
implementation "com.alibaba:fastjson:1.2.58"
- 格式化函数
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
- 添加依赖
implementation "com.google.code.gson:gson:2.8.5"
- 格式化函数
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
- 添加依赖
implementation "com.fasterxml.jackson.core:jackson-core:2.9.9"
implementation "com.fasterxml.jackson.core:jackson-databind:2.9.9"
- 格式化函数
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)
}
安卓开发技术分享: https://www.jianshu.com/p/442339952f26
点击关注专辑,查看最新技术分享
更多技术总结好文,请关注:「程序园中猿」