The RJson package

This package uses the Scrap Your Boilerplate With Class approach
to generics to implement a reflective Json serializer and deserializer.
Nested record types can be automatically converted to corresponding
JSON objects and vice versa. In both cases, various aspects of
serializing and deserializing can be customized by implementing instances of
type classes. Note that only Haskell 98 types can be
serialized and deserialized, and that the use of strict constructors will lead
to runtime errors with the current implemetation. Apart from the
reflective stuff, the package also provides a straightforward
Haskell representation of JSON data, together with a unicode-safe
parser and a suitable implementation of show. The code hasn't yet
been tested for performance; it might be quite slow.