Json4s:反序列化时在映射中保留未知字段
我试图在scala中使用json4s解析HTTP端点给出的响应。返回的Json可能有很多字段(它们都有文档记录和定义,但有很多字段,并且可能会发生更改。)我不需要引用这些字段中的很多,只需要将它们传递给其他服务来处理 我想获取所需的字段,并将其余字段反序列化为映射。该类还需要正确序列化 e、 g.来自端点的JSON响应:Json4s:反序列化时在映射中保留未知字段,json,scala,parsing,deserialization,json4s,Json,Scala,Parsing,Deserialization,Json4s,我试图在scala中使用json4s解析HTTP端点给出的响应。返回的Json可能有很多字段(它们都有文档记录和定义,但有很多字段,并且可能会发生更改。)我不需要引用这些字段中的很多,只需要将它们传递给其他服务来处理 我想获取所需的字段,并将其余字段反序列化为映射。该类还需要正确序列化 e、 g.来自端点的JSON响应: { "name": "value", "unknown_field": "unknown", "unknown_array": ["one", "two", "three
{
"name": "value",
"unknown_field": "unknown",
"unknown_array": ["one", "two", "three"],
...
...
}
e、 g.代码中使用的案例类别:
case class TestResponse(name: String, otherFields: Map[String, Any])
有没有简单的解决办法
我曾尝试为此实现一个自定义序列化程序,但迄今为止运气不太好。这似乎是一个足够普遍的要求。有没有办法用json4s实现OOTB
干杯
当前在customer serialiser上的尝试:
private object TestResponseDeserializer extends CustomSerializer[TestResponse](_ => ( {
case JObject(JField("name_one", JString(name)) :: rest) => TestType1Response(name, rest.toMap)
case JObject(JField("name_two", JString(name)) :: rest) => TestType2Response(name, rest.toMap)
}, {
case testType1: TestType1Response=>
JObject(JField("name_one", JString(testType1.name)))
case testType2: TestType2Response=> JObject(JField("name_two", JString(testType2.name)))
}))
在最初的问题中,我使用自定义序列化程序解决了这个问题。由于一个无关的问题,它对我不起作用