scala / liftweb序列化json

时间:2015-04-17 23:04:06

标签: scala lift

我正在使用scala的net.liftweb解析器

我有像这样的json

  {
  "k1":"v1",
  "k2":["v21", "v22", "v23"]
  }

k2是一个可选字段,json可能有也可能没有。我把它提取到一个案例类

案例类MyCC(k1:String,k2:List [String])

当json转换为case类时,如果k2不存在则将其反序列化为空列表。问题是在转换回json时,如果它是一个空列表,我怎么能让解析器不序列化这个字段。

1 个答案:

答案 0 :(得分:0)

您应该创建custom serializer。这对你的情况应该没问题:

import org.json4s._
import org.json4s.native.Serialization.write
class NilSerializer extends CustomSerializer[List[String]](format => ( {
    case JNothing => Nil
  }, {
    case Nil => JNothing
}))

implicit val formats = DefaultFormats + new NilSerializer
println(write(MyCC("key", Nil)))
>> {"k1":"key"}