scala class、Map、List 转换成Json(Gson、json4s、JSONUtil)
pom 依赖引入
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.6</version>
</dependency>
<dependency>
<groupId>org.json4s</groupId>
<artifactId>json4s-core_2.12</artifactId>
<version>3.6.6</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.6.3</version>
</dependency>
实例代码
import cn.hutool.json.JSONUtil
import com.google.gson.Gson
object EntitytoJsonTest {
def main(args: Array[String]): Unit = {
val gson = new Gson
val people = JJ("gl", 12, List("basketball", "baseball"),
Map("k1" -> "v1", "k2" -> "v2"),scala.collection.mutable.ListBuffer("xiaomi","tuanzi"))
println("gson======================")
val jsonStr = gson.toJson(people)
println(jsonStr)
println(gson.toJson(List("123", "234", "455")))
println(gson.toJson(List("123", "234", "455")))
println(gson.toJson(Map("k1" -> "v1", "k2" -> "v2")))
println("json4s======================")
import org.json4s._
import org.json4s.jackson.Serialization._
import org.json4s.jackson.Serialization
implicit val formats = Serialization.formats(NoTypeHints)
val m = Map(
"name" -> "john doe",
"age" -> 18,
"hasChild" -> true,
"childs" -> List(
Map("name" -> "dorothy", "age" -> 5, "hasChild" -> false),
Map("name" -> "bill", "age" -> 8, "hasChild" -> false)))
val s: String = write(m)
println(s)
val s1 = write(people)
println(s1)
println("JSONUtil======================")
println(JSONUtil.toJsonStr(people))
println(JSONUtil.toJsonPrettyStr(s1))
}
}
case class JJ(var name: String, var age: Int, var hobbies: List[String],
var skills: Map[String, String],
var friends: scala.collection.mutable.ListBuffer[String])
运行结果
gson======================
{"name":"gl","age":12,"hobbies":{},"skills":{},"friends":{"scala$collection$mutable$ListBuffer$$start":{},"last0":{"head":"tuanzi","tl":{}},"exported":false,"len":2}}
{"head":"123","tl":{}}
{"head":"123","tl":{}}
{"key1":"k1","value1":"v1","key2":"k2","value2":"v2"}
json4s======================
{"name":"john doe","age":18,"hasChild":true,"childs":[{"name":"dorothy","age":5,"hasChild":false},{"name":"bill","age":8,"hasChild":false}]}
{"name":"gl","age":12,"hobbies":["basketball","baseball"],"skills":{"k1":"v1","k2":"v2"},"friends":["xiaomi","tuanzi"]}
JSONUtil======================
{}
经测试:
Gson:支持普通对象属性转换,不支持对不可变的List、Map转换、支持对mutable.ListBuffer转换,但不友好
hutool.JSONUtil:白搭
json4s:均支持,万能,推荐使用
分类:
scala
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2022-07-06 MySQL、Oracle、PG 数据库、模式名、用户理解