我正在使用 Scalatra,后者又使用 Json4S 生成 Json 字符串。我收到
[“A”,“B”]
为了
列表(一些(“A”),无,一些(“B”))
我想收到
[“A”,未定义,“B”]
如何解决这个问题?
undefined
不是有效的 json 值,即使它在 javascript 中有效。来自rfc4627(应用程序/json):
JSON 值必须是对象、数组、数字或字符串,或以下三个文字名称之一:
假空真
(没有提到未定义)
然而,使用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"]