@JsonIgnore使用Jackon和Json4s序列化Scala案例类属性

Ala*_*air 5 scala jackson json4s

我试图阻止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!"}"
}
Run Code Online (Sandbox Code Playgroud)

eod*_*och 12

将@JsonIgnore更改为@JsonProperty("b").您已正确声明忽略该属性'b但是'b尚未注释为属性.

@JsonIgnoreProperties(Array("b"))
case class Message(a: String, @JsonProperty("b") b: String)
Run Code Online (Sandbox Code Playgroud)