json - 当值是None时,在play-json序列化中为Option [T]输出'null'

标签 json scala playframework-2.0

我正在使用play-json的宏来定义隐式Writes用于序列化JSON。但是,默认情况下,似乎play-json省略了将Option字段设置为None的字段。有没有办法更改默认值,使其改为输出null?我知道如果定义自己的Writes定义是可能的,但是我对通过宏来减少样板代码感兴趣。



case class Person(name: String, address: Option[String])

implicit val personWrites = Json.writes[Person]    
Json.toJson(Person("John Smith", None))

// Outputs: {"name":"John Smith"}
// Instead want to output: {"name":"John Smith", "address": null}

最佳答案

您可以使用自定义隐式JsonConfiguration,请参见Customize the macro to output null

implicit val config = JsonConfiguration(optionHandlers = OptionHandlers.WritesNull)

implicit val personWrites = Json.writes[Person]    
Json.toJson(Person("John Smith", None))

关于json - 当值是None时,在play-json序列化中为Option [T]输出'null',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22191574/

相关文章:

json - 玩 - 尝试实现写入列表[任何]

jquery - 如何限制jquery中json数据的each循环?

php - JSON 数据解析器不允许单引号

scala - 字典排列

scala - UDF 标量返回 [max,index]

playframework - 如何在 Play Framework 2 应用程序中以生产模式进行热重新部署?

javascript - jQuery 无法从 PHP 脚本读取 JSON 响应

playframework - Play Framework 是否支持像 rails 这样的嵌套路由?

java - PlayFramework 中缓存中的对象似乎是原始对象?

java - 了解八卦协议(protocol)