您当前的位置: 首页 >  json

蓝不蓝编程

暂无认证

  • 0浏览

    0关注

    706博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

使用Fastjson/Gson/Jackson美化json字符串格式

蓝不蓝编程 发布时间:2019-04-02 14:23:58 ,浏览量:0

问题描述

项目中需要对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)
}

安卓开发技术分享: https://blog.csdn.net/yinxing2008/article/details/84555061 点击关注专栏,查看最新技术分享 更多技术总结好文,请关注:「程序园中猿」

关注
打赏
1639405877
查看更多评论
立即登录/注册

微信扫码登录

0.0428s