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

Jae*_*Lim 5 json scala ignore jackson json4s

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

我试图使用注释忽略字段(如jackson java版本).

这是例外:

case class User(id: Long, name: String, accessToken: String)
Run Code Online (Sandbox Code Playgroud)

以下代码无效.

@JsonIgnoreProperties(Array("accessToken"))
case class User(id: Long, name: String, @JsonProperty("accessToken") accessToken: String)
Run Code Online (Sandbox Code Playgroud)

Ste*_*ari 9

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

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

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

implicit val formats = DefaultFormats + userSerializer
Run Code Online (Sandbox Code Playgroud)


S.K*_*hik 1

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

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