如何用json镜头反序列化json

时间:2015-08-26 12:34:14

标签: json scala

使用json镜头将JSON反序列化为Scala案例类的最佳做法是什么?

some.json:

[
  {
    "id": 1,
    "name": "Alice"
  },
  {
    "id": 2,
    "name": "Bob"
  },
  {
    "id": 3,
    "name": "Chris"
  }
]

某些案例类:

case class Foo(id: Long, name: String)

some.json 中的json转换为List[Foo]的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

json-lenses支持spray-json,你可以使用spray-json:

import spray.json._

case class Foo(id: Long, name: String)

object JsonProtocol extends DefaultJsonProtocol {
  implicit val FooFormat = jsonFormat2(Foo)
}

import JsonProtocol._
val source = scala.io.Source.fromFile("some.json")
val json = try source.mkString.parseJson finally source.close()

json.convertTo[List[Foo]]
// List[Foo] = List(Foo(1,Alice), Foo(2,Bob), Foo(3,Chris))