如何使用 json4s 反序列化没有索引的 json
How to deserialize json without index with json4s
使用 json4s,将 JSON 反序列化为 Scala 案例 class(没有索引键)的最佳做法是什么?
some.json
{
"1": {
"id": 1,
"year": 2014
},
"2": {
"id": 2,
"year": 2015
},
"3": {
"id": 3,
"year": 2016
}
}
some case class
case class Foo(id: Int, year: Int)
您应该将 json 反序列化为相应的 Scala 数据结构。在你的例子中,类型是 Map[Int, Foo]
。所以先提取这个类型。帮助片段是:
import org.json4s._
import org.json4s.native.JsonMethods._
implicit lazy val formats = DefaultFormats
val json =
"""
|{
| "1": {
| "id": 1,
| "year": 2014
| },
| "2": {
| "id": 2,
| "year": 2015
| },
| "3": {
| "id": 3,
| "year": 2016
| }
|}
""".stripMargin
case class Foo(id: Int, year: Int)
val ast = parse(json)
val fooMap = ast.extract[Map[Int, Foo]]
结果:
Map(1 -> Foo(1,2014), 2 -> Foo(2,2015), 3 -> Foo(3,2016))
使用 json4s,将 JSON 反序列化为 Scala 案例 class(没有索引键)的最佳做法是什么?
some.json
{
"1": {
"id": 1,
"year": 2014
},
"2": {
"id": 2,
"year": 2015
},
"3": {
"id": 3,
"year": 2016
}
}
some case class
case class Foo(id: Int, year: Int)
您应该将 json 反序列化为相应的 Scala 数据结构。在你的例子中,类型是 Map[Int, Foo]
。所以先提取这个类型。帮助片段是:
import org.json4s._
import org.json4s.native.JsonMethods._
implicit lazy val formats = DefaultFormats
val json =
"""
|{
| "1": {
| "id": 1,
| "year": 2014
| },
| "2": {
| "id": 2,
| "year": 2015
| },
| "3": {
| "id": 3,
| "year": 2016
| }
|}
""".stripMargin
case class Foo(id: Int, year: Int)
val ast = parse(json)
val fooMap = ast.extract[Map[Int, Foo]]
结果:
Map(1 -> Foo(1,2014), 2 -> Foo(2,2015), 3 -> Foo(3,2016))