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

Copyright | (c) Galois, Inc. 2007-2009
License | BSD3
Maintainer | Sigbjorn Finne <sof@galois.com>
Stability | provisional
Portability | portable
Safe Haskell | Safe
Language | Haskell98

Text.JSON.Types

Contents

- JSON Types
- Wrapper Types

Description

Synopsis

- data JSValue
  - = JSNull
  - | JSBool !Bool
  - | JSRational Bool !Rational
  - | JSString JSString
  - | JSArray [JSValue]
  - | JSObject (JSObject JSValue)
- newtype JSString = JSONString {
  - fromJSString :: String
  }
- toJSString :: String -> JSString
- newtype JSObject e = JSONObject {
  - fromJSObject :: [(String, e)]
  }
- toJSObject :: [(String, a)] -> JSObject a
- get_field :: JSObject a -> String -> Maybe a
- set_field :: JSObject a -> String -> a -> JSObject a

# 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

Constructors

JSNull |
JSBool !Bool |
JSRational Bool !Rational |
JSString JSString |
JSArray [JSValue] |
JSObject (JSObject JSValue) |

Instances

Eq JSValue Source |
Ord JSValue Source |
Read JSValue Source |
Show JSValue Source |
JSON JSValue Source | 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

Instances

Eq JSString Source |
Ord JSString Source |
Read JSString Source |
Show JSString Source |
JSKey JSString Source |
JSON JSString Source |

toJSString :: String -> JSString Source

Turn a Haskell string into a JSON string.

newtype JSObject e Source

As can association lists

Constructors

JSONObject |

Fields

fromJSObject :: [(String, e)]

Instances

Eq e => Eq (JSObject e) Source |
Ord e => Ord (JSObject e) Source |
Read e => Read (JSObject e) Source |
Show e => Show (JSObject e) Source |
JSON a => JSON (JSObject a) Source |

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

Make JSON object out of an association list.

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

Get the value of a field, if it exist.

set_field :: JSObject a -> String -> a -> JSObject a Source

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