Maintainer | Leon P Smith <leon@melding-monads.com> |
---|---|
Safe Haskell | None |
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.
Documentation
The Object
type represents syntax for a json object. It has a singleton
constructor row
, and an instance of Monoid
, so that mempty
represents
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.
The 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 toJson
.
data CommaMonoid Source
A CommaMonoid
inserts commas between builders. In order to
satisify the Monoid
identity laws, Empty
must be distinguished
from
. To demonstrate the difference:
Comma
mempty
mconcat ["foo", "" , "bar"] == "foo,,bar" mconcat ["foo", Empty , "bar"] == "foo,bar"
The strings in this example denote CommaMonoids
via
. Thus fromString
= Comma . fromString
""
is equivalent
to Comma mempty
.