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

Portabilityportable
Stabilityprovisional
MaintainerSigbjorn Finne <sof@galois.com>
Safe HaskellSafe-Inferred

Text.JSON.Types

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

Instances

Eq JSValue 
Ord JSValue 
Read JSValue 
Show JSValue 
Typeable JSValue 
JSON JSValue

To ensure we generate valid JSON, we map Haskell types to JSValue internally, then pretty print that.

Wrapper Types

newtype JSString Source

Strings can be represented a little more efficiently in JSON

Constructors

JSONString 

Fields

fromJSString :: String
 

toJSString :: String -> JSStringSource

Turn a Haskell string into a JSON string.

newtype JSObject e Source

As can association lists

Constructors

JSONObject 

Fields

fromJSObject :: [(String, e)]
 

Instances

Typeable1 JSObject 
Eq e => Eq (JSObject e) 
(Eq (JSObject e), Ord e) => Ord (JSObject e) 
Read e => Read (JSObject e) 
Show e => Show (JSObject e) 
JSON a => JSON (JSObject a) 

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

Make JSON object out of an association list.

get_field :: JSObject a -> String -> Maybe aSource

Get the value of a field, if it exist.

set_field :: JSObject a -> String -> a -> JSObject aSource

Set the value of a field. Previous values are overwritten.