使用aeson deriveJSON很容易省略Nothing值,例如:
data Person =
Person {
ssn :: Maybe Text,
phone :: [Text]
}
$(deriveJSON defaultOptions{omitNothingFields=True} ''Person)
我还想省略空列表以保持JSON紧凑。 是否有一般使用deriveJSON省略空列表,没有手动滚动实例?
答案 0 :(得分:1)
我相信你目前无法做到这一点。
我认为它遵循的理念是对象的结构应该与类型大致对齐;从这个角度来看,对于不存在的字段,{... phone: [] ...}
或甚至{... phone: null ...}
比将它们从对象中删除更“打字”。
如果你想保持JSON“紧凑”的原因不是为了优雅,而是带宽原因gzip
或类似JSONH之类的内容可能会透明地实现几乎相同的节省,而无需更改对象的结构。