我正在使用scala的net.liftweb解析器
我有像这样的json
{
"k1":"v1",
"k2":["v21", "v22", "v23"]
}
k2是一个可选字段,json可能有也可能没有。我把它提取到一个案例类
案例类MyCC(k1:String,k2:List [String])
当json转换为case类时,如果k2不存在则将其反序列化为空列表。问题是在转换回json时,如果它是一个空列表,我怎么能让解析器不序列化这个字段。
答案 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"}