本文介绍了@JsonIgnore使用Jackon和Json4s序列化Scala案例类属性的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试阻止Scala 案例类
的某个属性被序列化。我尝试使用通常的 @JsonIgnore
注释相关属性,我也尝试附加 @JsonIgnoreProperties(Array(property_name)) )
到案例类
。这两者似乎都达不到我想要的。
I'm trying to prevent one of the properties of a Scala case class
being serialised. I've tried annotating the property in question with the usual @JsonIgnore
and I've also tried attaching the @JsonIgnoreProperties(Array("property_name"))
to the case class
. Neither of which seem to achieve what I want.
以下是一个小例子:
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还没有安作为一个属性。
Change your @JsonIgnore to @JsonProperty("b"). You have correctly stated to Ignore the property 'b but 'b has not yet been annotated as a property.
@JsonIgnoreProperties(Array("b"))
case class Message(a: String, @JsonProperty("b") b: String)
这篇关于@JsonIgnore使用Jackon和Json4s序列化Scala案例类属性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!