3

我正在使用 Scalatra,后者又使用 Json4S 生成 Json 字符串。我收到

[“A”,“B”]

为了

列表(一些(“A”),无,一些(“B”))

我想收到

[“A”,未定义,“B”]

如何解决这个问题?

4

1 回答 1

1

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"]
于 2013-07-25T22:59:35.717 回答