我试图防止Scala case class
的属性之一被序列化。我尝试使用常用的@JsonIgnore
注释有问题的属性,并且还尝试将@JsonIgnoreProperties(Array("property_name"))
附加到case class
。似乎都没有达到我想要的。
这是一个小例子:
import org.json4s._
import org.json4s.jackson._
import org.json4s.jackson.Serialization
import org.json4s.jackson.Serialization.{read, write}
import com.fasterxml.jackson.annotation._
object Example extends App {
@JsonIgnoreProperties(Array("b"))
case class Message(a: String, @JsonIgnore b: String)
implicit val formats = Serialization.formats(NoTypeHints)
val jsonInput = """{ "a": "Hello", "b":"World!" }"""
val message = read[Message](jsonInput)
println("Read " + message) // "Read Message(Hello,World!)
val output = write(message)
println("Wrote " + output) // "Wrote {"a":"Hello","b":"World!"}"
}
最佳答案
将您的@JsonIgnore更改为@JsonProperty(“b”)。您已经正确声明了忽略属性'b,但是'b尚未被注释为属性。
@JsonIgnoreProperties(Array("b"))
case class Message(a: String, @JsonProperty("b") b: String)
关于scala - @JsonIgnore使用Jackson和Json4s序列化Scala案例类属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25654811/