Json4s:反序列化时在映射中保留未知字段

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

我试图在scala中使用json4s解析HTTP端点给出的响应。返回的Json可能有很多字段(它们都有文档记录和定义,但有很多字段,并且可能会发生更改。)我不需要引用这些字段中的很多,只需要将它们传递给其他服务来处理

我想获取所需的字段,并将其余字段反序列化为映射。该类还需要正确序列化

e、 g.来自端点的JSON响应:

{
 "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)))
  }))

在最初的问题中,我使用自定义序列化程序解决了这个问题。由于一个无关的问题,它对我不起作用