json-builder-0.1.0: Data structure agnostic JSON serialization

MaintainerLeon P Smith <leon@melding-monads.com>



Internal bits. You can break this library's abstraction and emit invalid Json syntax the constructors provided in this module.



class Value a whereSource

The Value typeclass represents types that can be rendered into valid json syntax.


toJson :: a -> JsonSource


newtype Json Source

The Json type represents valid json syntax. It cannot be directly analyzed, however it can be rendered into a ByteString and used to as a component of an array or an object to build a bigger json value.


Json Builder 


class Value a => JsString a whereSource

The String typeclass represents types that render into json string syntax. They are special because only strings can appear as field names of json objects.


escape :: a -> EscapedSource

newtype Escaped Source

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.


Escaped Builder