如何使用aeson deriveJSON省略空列表?

时间:2014-01-25 01:25:36

标签: haskell aeson

使用aeson deriveJSON很容易省略Nothing值,例如:

data Person = 
  Person {
    ssn :: Maybe Text,
    phone :: [Text]
  }

$(deriveJSON defaultOptions{omitNothingFields=True} ''Person)

我还想省略空列表以保持JSON紧凑。 是否有一般使用deriveJSON省略空列表,没有手动滚动实例?

1 个答案:

答案 0 :(得分:1)

我相信你目前无法做到这一点。

我认为它遵循的理念是对象的结构应该与类型大致对齐;从这个角度来看,对于不存在的字段,{... phone: [] ...}或甚至{... phone: null ...}比将它们从对象中删除更“打字”。

如果你想保持JSON“紧凑”的原因不是为了优雅,而是带宽原因gzip或类似JSONH之类的内容可能会透明地实现几乎相同的节省,而无需更改对象的结构。