7

使用 aeson derivedJSON 可以很容易地省略 Nothing 值,例如:

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

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

我还想省略空列表以保持 JSON 紧凑。是否有一般使用deriveJSON省略空列表而不手动滚动实例的通用方法?

4

1 回答 1

2

我相信你目前不能这样做。

我猜它遵循对象的结构应该与类型大致对齐的理念;从这个角度来看,拥有{... phone: [] ...}{... phone: null ...}至是不存在的字段比将它们排除在对象之外“更具类型化”。

如果您希望保持 JSON“紧凑”的原因不是为了优雅,而是出于带宽原因,gzip或者JSONH之类的东西可以透明地实现几乎相同的节省,而无需更改对象的结构。

于 2014-02-27T14:20:45.050 回答