json4s jackson - 如何使用注解忽略字段

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)

注意:Json4s容易受到DoS/DoW攻击的影响。请参考链接:https://github.com/json4s/json4s/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+denial! - Andriy Plokhotnyuk
3个回答

9
在json4s中,你可以提供一个字段序列化器的实例,可以配置忽略或重命名字段。请查看文档以获取更多详细信息,但以下内容应该有效:
case class User(id: Long, name: String, accessToken: String)

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

implicit val formats = DefaultFormats + userSerializer

如何使其适用于多个要忽略的字段? - Dragonborn

1

您可以编写一个实用方法,带有默认参数为要删除的键,例如:

def removeKeys(entity:AnyRef, keys: List[String]=List("accessToken", "key1", "key2")): String= {
compact(Extraction.decompose(entity).removeField { x => keys.contains(x._1)})
}

0

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

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

正如在https://github.com/json4s/json4s/issues/90问题中所解释的那样


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接