scala - @JsonIgnore使用Jackson和Json4s序列化Scala案例类属性

标签 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!"}"
}

最佳答案

将您的@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/

相关文章:

json - NotSerializableException与Spark上的json4s

java - 在 Java Controller (PlayFramework) 中执行 Scala Action

scala - Spark 读取为 jdbc 返回所有行作为列名

java - 无法从 JSON 字符串实例化类型 [简单类型,类 org.joda.time.LocalDateTime] 的值;没有单字符串构造函数/工厂方法

java - JSON 序列化时 jsonrpc4j null

java - Spring MVC 4 是否考虑参数的 Jackson 注释?

xml - 使用 Spark/Scala 从 XML 记录中提取元素

scala - 在Spark中使用复杂过滤从Elasticsearch获取esJsonRDD

java - 使用Scala获取底层的JSON数据

json - 如何使用 scala 中的 json4s 库测试我为解析器创建的案例类是否正确?