我正在尝试使用 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)