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

时间:2015-03-27 08:35:16

标签: json scala jackson ignore json4s

我正在使用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)

3 个答案:

答案 0 :(得分:8)

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

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

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

implicit val formats = DefaultFormats + userSerializer

答案 1 :(得分:1)

您可以编写一个实用程序方法,使用Keys删除默认参数,如下所示

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

答案 2 :(得分:0)

扩展Steven Bakhtari的答案:如果您想忽略多个字段,可以执行以下操作:

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

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