我有一个简单的案例类
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])
这很有效:)
答案 0 :(得分:0)
注解只是在构造函数参数而不是字段上结束。
来自 Scala 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])