【问题标题】:@JsonIgnore doesn't work in Scala case class@JsonIgnore 在 Scala 案例类中不起作用
【发布时间】:2017-03-21 20:13:38
【问题描述】:

我有一个简单的案例类

case class Project(@JsonIgnore id: Option[UUID], name: Option[String])

我正在使用 com.fasterxml.jackson

com.fasterxml.jackson.core:jackson-databind:2.8.4
com.fasterxml.jackson.core:jackson-annotations:2.8.4
org.skinny-framework.com.fasterxml.jackson.module:jackson-module-scala_2.12:2.8.4

...

private val mapper = new ObjectMapper()
mapper.registerModule(DefaultScalaModule)
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
mapper.writeValueAsString(project) 

尽管@JsonIgnore 将 id 写入结果 json

我做错了什么?

更新:

当前的解决方法:

@JsonIgnoreProperties(Array("id"))
case class Project(id: Option[UUID], name: Option[String]) 

这很好:)

【问题讨论】:

  • 感谢您更新您的分辨率。效果很好。

标签: json scala


【解决方案1】:

注解只是在构造函数参数而不是字段上结束。

来自斯卡拉doc

By default, annotations on (val-, var- or plain) constructor parameters end up on the parameter, not on any other entity

您需要使用 scala 的元注释将注释放在字段上。试试这个

import scala.annotation.meta._
case class Project(@(JsonIgnore @field) id: Option[UUID], name: Option[String])

【讨论】:

    猜你喜欢
    • 2014-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多