5

我正在使用 json4s-jackson(版本 3.2.11)。

我正在尝试使用注释(如jackson java版本)忽略字段。

这是示例:

case class User(id: Long, name: String, accessToken: String)

以下代码不起作用。

@JsonIgnoreProperties(Array("accessToken"))
case class User(id: Long, name: String, @JsonProperty("accessToken") accessToken: String)
4

3 回答 3

9

在 json4s 中,您可以提供一个字段序列化程序的实例,可以将其配置为忽略或重命名字段。检查文档以获取更多详细信息,但应该可以使用以下内容:

case class User(id: Long, name: String, accessToken: String)

val userSerializer = FieldSerializer[User](
  FieldSerializer.ignore("accessToken")
)

implicit val formats = DefaultFormats + userSerializer
于 2016-03-01T16:13:34.763 回答
1

您可以编写一个实用方法,将要删除的键作为默认参数,如下所示,

def removeKeys(entity:AnyRef, keys: List[String]=List("accessToken", "key1", "key2")): String= {
compact(Extraction.decompose(entity).removeField { x => keys.contains(x._1)})
}
于 2015-03-27T08:42:40.830 回答
0

扩展 Steven Bakhtari 的回答:如果你想忽略多个字段,你可以这样做:

FieldSerializer.ignore("config") orElse ignore("category")

如本https://github.com/json4s/json4s/issues/90问题中所述

于 2020-08-18T18:54:07.523 回答