小编use*_*600的帖子

Spray-json反序列化嵌套对象

如何在spray-json中正确反序列化嵌套对象?

    import spray.json._

    case class Person(name: String)

    case class Color(n: String, r: Int, g: Int, b: Int, p: Person)

    object MyJsonProtocol extends DefaultJsonProtocol {

      implicit object ColorJsonFormat extends RootJsonFormat[Color] {
        def write(c: Color) = JsObject(
          "color-name" -> JsString(c.n),
          "Green" -> JsNumber(c.g),
          "Red" -> JsNumber(c.r),
          "Blue" -> JsNumber(c.b),
          "person-field" -> JsObject("p-name" -> JsString(c.p.name))
        )

        def read(value: JsValue) = {
          value.asJsObject.getFields("color-name", "Red", "Green", "Blue", "person-field") match {
            case Seq(JsString(name), JsNumber(red), JsNumber(green), JsNumber(blue), JsObject(person)) =>
              Color(name, red.toInt, green.toInt, blue.toInt, null) //gotta replace null …
Run Code Online (Sandbox Code Playgroud)

json scala spray-json

9
推荐指数
1
解决办法
2万
查看次数

如何在使用Json4s序列化期间重命名字段?

如何在json4s中轻松重命名字段名?从他们的文档,我已经尝试了以下代码片段,但它似乎没有重命名该serial字段id.

case class Person(serial: Int, firstName: String)

val rename = FieldSerializer[Person](renameTo("serial", "id"))

implicit val format = DefaultFormats + rename

write(Person(1, "Guest")) //returns {"serial":1,"firstName":"Guest"}
Run Code Online (Sandbox Code Playgroud)

使用Jackson库,通过声明注释很容易.但我正在寻找一个纯粹的scala库/解决方案.是否有更好的库或方法用于scala中的对象到json序列化,并且易于字段重命名?

json scala json4s

7
推荐指数
1
解决办法
3221
查看次数

标签 统计

json ×2

scala ×2

json4s ×1

spray-json ×1