【问题标题】:json4s jackson - How to ignore field using annotationsjson4s jackson - 如何使用注释忽略字段
【发布时间】:2015-05-31 12:35:16
【问题描述】:

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

【问题讨论】:

标签: json scala jackson json4s


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    case class User(id: Long, name: String, accessToken: String)
    
    val userSerializer = FieldSerializer[User](
      FieldSerializer.ignore("accessToken")
    )
    
    implicit val formats = DefaultFormats + userSerializer
    

    【讨论】:

    • 如何让多个字段被忽略?
    【解决方案3】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-20
      • 1970-01-01
      • 2015-10-19
      • 1970-01-01
      • 2018-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多