【发布时间】:2015-04-18 07:58:14
【问题描述】:
我正在为 scala 使用 net.liftweb 解析器
我有一个这样的json
{
"k1":"v1",
"k2":["v21", "v22", "v23"]
}
k2 是一个可选字段,json 可能有也可能没有。我把它提取到一个案例类中
案例类 MyCC (k1: String, k2: List[String])
当 json 转换为 case 类时,如果 k2 不存在,则将其反序列化为空列表。问题是在转换回 json 时,如果它是一个空列表,我怎么能让解析器不序列化这个字段。
【问题讨论】:
-
这听起来正是
Option的意思。 -
@soong:你的意思是字段 k2 应该是类型:Option[List[String]]。我不认为使用 2 个 continers (list , option) 是个好主意
-
为什么不呢?这正是它的本质......我想如果你不喜欢它,你可以只使用一个空列表,但你编写的以这种方式处理它的逻辑正是
Option已经包含的内容。 -
我更喜欢
Nil: List[String]而不是None: Option[List[String]]。额外的布局对我来说很烦人。而且在处理 api 需求、elasticSearch 索引等时,无论如何都必须熟悉这些序列化策略。