@JsonIgnore在Scala案例类中不起作用

时间:2016-11-08 09:10:13

标签: json scala

我有一个简单的案例类

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]) 

这很有效:)

1 个答案:

答案 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])