将JSON字符串反序列化为Scala中的List [Map [String,Any]]

问题描述 投票:0回答:1

这是代码:

def fromStrings(json: String): List[Map[String, Any]] = {
    implicit val formats = org.json4s.DefaultFormats

    parse(json).extract[List[Map[String, Any]]]
  }

这是错误:

java.lang.ClassCastException: scala.collection.immutable.$colon$colon cannot be cast to scala.collection.mutable.Seq

我能够反序列化单个对象,我认为扩展到列表很容易,但是它没有按预期工作。我查找了此错误,但没有发现与我在这里所做的事情有关的情况。

这是我正在测试的数据:

[
  {
    "schemaVersion": "1",
    "data": {
      "new_data": {
        "case_id": "1"
      },
      "id": "1"
    }
  },
  {
    "schemaVersion": "2",
    "data": {
      "new_data": {
        "case_id": "2"
      },
      "id": "2"
    }
  },
  {
    "schemaVersion": "3",
    "data": {
      "new_data": {
        "case_id": "3"
      },
      "id": "3"
    }
  }
]
json scala
1个回答
0
投票
def deserializeObjects(json: String): Seq[Map[String, Any]] = {
   implicit val formats = org.json4s.DefaultFormats
   val jsons = JsonParser.parseString(json).getAsJsonArray.iterator()

   var maps: Seq[Map[String, Any]] = Seq()
   while (jsons.hasNext) {
     val s = jsons.next().getAsJsonObject.toString
     maps = maps :+ parse(s).extract[Map[String, Any]]
   }
   maps
}
© www.soinside.com 2019 - 2024. All rights reserved.