我正在使用 Scala 的 uPickle 来解析这个 JSON:
{ "somevalue": 1, "revenue": [], "boost": { ... } }
问题是“收入”有时是一个对象,有时是一个空数组。如果它是一个空数组,这意味着该值不存在(它应该为null或不存在,但我没有生成这个json,所以我必须适应)。
是否有可能说服 uPickle 以便当它期望 aMap[_,_]
并获得一个空序列时,发出一个空对象?我想像这样为上面的 json 声明一个案例类:
case class MyObject {
val somevalue: Int,
val revenue: Map[String, RevenueChildItem],
val boost: Map[String, BoostChildItem],
}
目前 uPickle 将中止错误“期望对象,得到序列”。
我也许可以在解析之前对 JSON 文件进行预处理,但首先我想知道 uPickle 是否能够做这样的事情?
我知道我可能可以使用自定义pickler来做到这一点,但是我有几十个结构要解析,每个结构都有相同的规则(即空对象的空序列),这样做真的很好它以更一般的方式,并自动在任何地方应用它。