我是使用 json 的 Scala na json4s。为了反序列化,我调用了 org.json4s.native.JsonMethods.parse 和 ExtractableJsonAstNode.extract 方法。这是 json 文件的一部分:
"": {
"atribute1": "v1",
"instanceId": "i",
},
它包含没有名称的属性。案例类中的字段名称应该是什么才能成功反序列化属性?
我认为您无法将此类 json 解析为案例类。除非你为它做一个自定义的反序列化器,然后你可以自己决定。
import org.json4s.{JValue, CustomSerializer, DefaultFormats}
import org.json4s.native.JsonMethods
import org.json4s.JsonDSL._
import org.json4s._
case class Outer(value: Inner, other: String)
case class Inner(atribute1: String, instanceId: String)
object Formats extends DefaultFormats {
val outerSerializer = new CustomSerializer[Outer](implicit format ⇒ (
{ case j: JValue ⇒ Outer(
(j \ "").extract[Inner],
(j \ "other").extract[String]
)},
{ case a: Outer ⇒
("" → Extraction.decompose(a.value)) ~
("other" → a.other)
})
)
override val customSerializers = List(outerSerializer)
}
implicit val formats = Formats
val json = """
{
"": {
"atribute1": "v1",
"instanceId": "i",
},
"other": "1"
}
"""
JsonMethods.parse(json).extract[Outer]