|Maintainer||Leon P Smith <email@example.com>|
Internal bits. By using the constructors provided in this module, you can break the abstraction that json-builder provides and emit invalid JSON syntax. Also, this module is not as stable as the public interface and can change at any time.
Json type represents valid json syntax. It cannot be directly
analyzed, however it can be turned into a
toJsonLBS, or used as a
component of a json
Array or json
Object type represents syntax for a json object. It has a singleton
row, and an instance of
Monoid, so that
the empty object and
mappend concatinates two objects. Arbitrary objects
can be constructed using these operators.
Note that duplicate field names will appear in the output, so it is up to the user of this interface to avoid duplicate field names.
Array type represents syntax for a json array. It has been given
a singleton constructor
element and an instance of
Monoid, so that
mempty represents the empty array and
mappend concatinates two arrays.
Arbitrary arrays can be constructed using these operators.
Escaped type represents json string syntax. The purpose of this
type is so that json strings can be efficiently constructed from multiple
Haskell strings without superfluous conversions or concatinations.
Internally, it is just a
Builder value which must produce a UTF-8 encoded
bytestring with backslashes, quotes, and control characters appropriately
escaped. It also must not render the opening or closing quote, which
are instead rendered by
mconcat ["foo", "" , "bar"] == "foo,,bar" mconcat ["foo", Empty , "bar"] == "foo,bar"