首页 > 解决方案 > 将 Object(可以是 int、long、string 等)转换为 Json Circe

问题描述

所以我有一个包含动态字段和值的地图列表。

例如

val sampleMap = List(
     Map("field1" -> 1, "field2" -> "helloworld"), 
     Map("field3" -> "abcd", "field4" -> 123.34212543))

所以基本上,我有一个变量是List[Map[String, Object]].

我怎样才能将整个事情转换成 JSON circe?

标签: jsonscalacirce

解决方案


没关系,我找到了答案。

基本上我们需要匹配对象的数据类型并将其转换为 JSON。

def toJson(obj: Object): Json = {
      obj match {
        case null                 => Json.Null
        case b: java.lang.Boolean => Json.fromBoolean(b)
        case i: java.lang.Integer => Json.fromInt(i)
        case d: java.lang.Double =>
          Json.fromDouble(d).getOrElse(Json.fromDouble(0d).get)
        case l: java.lang.Long => Json.fromLong(l)
        case t: TemporalAccessor =>
          Json.fromString(DtFormatter.format(t))
        case u => Json.fromString(String.valueOf(u))
      }
    }

推荐阅读