| Maintainer | Leon P Smith <leon@melding-monads.com> |
|---|---|
| Safe Haskell | None |
Data.Json.Builder.Internal
Description
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.
Constructors
| Object CommaMonoid |
The 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.
Constructors
| Array CommaMonoid |
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.
Instances