我正在使用Scalatra,后者又使用Json4S生成Json字符串。我收到了
[ “A”, “B”]
代表
列表(一些( “A”),无,一些( “B”))
我想收到
[ “A”,未定义, “B”]
如何解决这个问题?
答案 0 :(得分:1)
undefined
不是有效的json值,即使它在javascript中有效。
来自rfc4627(application / json):
JSON值必须是对象,数组,数字或字符串,或者是其中之一 以下三个字面名称:
false null true
(未提及未定义)
然而,使用null
代替undefined
这是非常简单的。在scala控制台中,首先要导入几个:
scala> import org.json4s._
scala> import org.json4s.native.Serialization.write
客户序列化程序:
scala> class NoneJNullSerializer extends CustomSerializer[Option[_]](format => ({ case JNull => None }, { case None => JNull }))
瞧:
scala> implicit val formats = DefaultFormats + new NoneJNullSerializer()
scala> val ser = write(List(Some("A"), None, Some("B")))
ser: String = ["A",null,"B"]