小编Den*_*nis的帖子

使用 Spray Json 解析超过 22 个字段,无需嵌套案例类

我正在尝试使用 Spray-JSON 来编组具有 22 个以上字段的传入 JSON。由于没有 JsonFormat23() 方法,我不得不嵌套我的案例类来绕过限制。但是,传入的 JSON 不知道嵌套结构。

有没有办法避免在 Spray Json 中使用嵌套结构?

编辑

这是我的解决方案,以便其他人不会有同样的痛苦。我的一个问题是我的所有字段都是可选的,这又增加了一层复杂性。您可以在此解决方案中放置任意数量的字段

    implicit object myFormat extends RootJsonFormat[myFormat] {
        override def write(js : myFormat):JsValue =
          JsObject(
            List(
              Some("language" -> js.language.toJson),
              Some("author" -> js.author.toJson),
                ....
            ).flatten: _*
          )

        override def read(json: JsValue):myFormat= {
          val fieldNames = Array("language", ... , "author")

          val jsObject = json.asJsObject
          jsObject.getFields(fieldNames:_*)

          // code to transform fields to case class

          // Initializes class with list of parameters
          myFormat.getClass.getMethods.find(x => x.getName == "apply" && x.isBridge)
            .get.invoke(myFormat, …
Run Code Online (Sandbox Code Playgroud)

scala spray-json

3
推荐指数
1
解决办法
1729
查看次数

标签 统计

scala ×1

spray-json ×1