packages feed

generic-aeson-0.2.0.3: README.md

# generic-aeson

[![Build Status](https://travis-ci.org/silkapp/generic-aeson.svg?branch=master)](https://travis-ci.org/silkapp/generic-aeson)

The structure of the generated JSON is meant to be close to
idiomatic JSON. This means:

* Enumerations (data types containing constructors without fields) are converted to JSON strings.

* Record fields become JSON keys.

* Data types with one unlabeled field convert to just that field.

* Data types with multiple unlabeled fields become arrays.

* Multiple constructors are represented by keys.

* `Maybe` values are either an absent key, or the value.

* Leading and trailing underscores are removed from constructor names and record fields

See `tests/Main.hs` in [json-schema](http://hackage.haskell.org/package/json-schema) for more examples.


## How does generic-aeson compare to the TH/Generics already present in aeson?

generic-aeson contains more special cases for creating more concise
and idiomatic json. If you're working with the JSON representation
directly generic-aeson should feel more natural.

## Will the generated format ever change?

Changing the format would incur a breaking change to every API that
uses generic-aeson so we must keep it intact.

If we find a bug where the fix changes the format we need to create a
new package or version the generation code.

## Schemas

[json-schema](http://hackage.haskell.org/package/json-schema) has
generic derivation of schemas that match the generic-aeson format.