json-0.4.4: Support for serialising Haskell to and from JSON

Portabilityportable
Stabilityprovisional
MaintainerSigbjorn Finne <sof@galois.com>

Text.JSON

Contents

Description

 

Synopsis

JSON Types

data JSValue Source

JSON values

The type to which we encode Haskell values. There's a set of primitives, and a couple of heterogenous collection types.

Objects:

An object structure is represented as a pair of curly brackets surrounding zero or more name/value pairs (or members). A name is a string. A single colon comes after each name, separating the name from the value. A single comma separates a value from a following name.

Arrays:

An array structure is represented as square brackets surrounding zero or more values (or elements). Elements are separated by commas.

Only valid JSON can be constructed this way

Serialization to and from JSValues

class JSON a whereSource

The class of types serialisable to and from JSON

Encoding and Decoding

data Result a Source

A type for parser results

Constructors

Ok a 
Error String 

encode :: JSON a => a -> StringSource

Encode a Haskell value into a string, in JSON format.

This is a superset of JSON, as types other than Array and Object are allowed at the top level.

decode :: JSON a => String -> Result aSource

Decode a String representing a JSON value (either an object, array, bool, number, null)

This is a superset of JSON, as types other than Array and Object are allowed at the top level.

encodeStrict :: JSON a => a -> StringSource

Encode a value as a String in strict JSON format. This follows the spec, and requires all values at the top level to be wrapped in either an Array or Object. JSON types to be an Array or Object.

decodeStrict :: JSON a => String -> Result aSource

Decode a String representing a strict JSON value. This follows the spec, and requires top level JSON types to be an Array or Object.

Wrapper Types

data JSString Source

Strings can be represented a little more efficiently in JSON

toJSString :: String -> JSStringSource

Turn a Haskell string into a JSON string.

data JSObject e Source

As can association lists

toJSObject :: [(String, a)] -> JSObject aSource

Make JSON object out of an association list.

resultToEither :: Result a -> Either String aSource

Map Results to Eithers

Serialization to and from Strings.

Reading JSON

readJSNull :: GetJSON JSValueSource

Read the JSON null type

readJSBool :: GetJSON JSValueSource

Read the JSON Bool type

readJSString :: GetJSON JSValueSource

Read the JSON String type

readJSRational :: GetJSON RationalSource

Read an Integer or Double in JSON format, returning a Rational

readJSArray :: GetJSON JSValueSource

Read a list in JSON format

readJSObject :: GetJSON JSValueSource

Read an object in JSON format

readJSValue :: GetJSON JSValueSource

Read one of several possible JS types

Writing JSON

showJSNull :: ShowSSource

Write the JSON null type

showJSBool :: Bool -> ShowSSource

Write the JSON Bool type

showJSArray :: [JSValue] -> ShowSSource

Show a list in JSON format

showJSRational :: Rational -> ShowSSource

Show a Rational in JSON format

showJSObject :: JSObject JSValue -> ShowSSource

Show an association list in JSON format

showJSValue :: JSValue -> ShowSSource

Show JSON values

Instance helpers

valFromObj :: JSON a => String -> JSObject JSValue -> Result aSource

Pull a value out of a JSON object.