json-0.4.4: Support for serialising Haskell to and from JSONSource codeContentsIndex
Text.JSON
Portabilityportable
Stabilityprovisional
MaintainerSigbjorn Finne <sof@galois.com>
Contents
JSON Types
Serialization to and from JSValues
Encoding and Decoding
Wrapper Types
Serialization to and from Strings.
Reading JSON
Writing JSON
Instance helpers
Description
Synopsis
data JSValue
= JSNull
| JSBool !Bool
| JSRational Bool !Rational
| JSString JSString
| JSArray [JSValue]
| JSObject (JSObject JSValue)
class JSON a where
readJSON :: JSValue -> Result a
showJSON :: a -> JSValue
readJSONs :: JSValue -> Result [a]
showJSONs :: [a] -> JSValue
data Result a
= Ok a
| Error String
encode :: JSON a => a -> String
decode :: JSON a => String -> Result a
encodeStrict :: JSON a => a -> String
decodeStrict :: JSON a => String -> Result a
data JSString
toJSString :: String -> JSString
fromJSString :: JSString -> String
data JSObject e
toJSObject :: [(String, a)] -> JSObject a
fromJSObject :: JSObject e -> [(String, e)]
resultToEither :: Result a -> Either String a
readJSNull :: GetJSON JSValue
readJSBool :: GetJSON JSValue
readJSString :: GetJSON JSValue
readJSRational :: GetJSON Rational
readJSArray :: GetJSON JSValue
readJSObject :: GetJSON JSValue
readJSValue :: GetJSON JSValue
showJSNull :: ShowS
showJSBool :: Bool -> ShowS
showJSArray :: [JSValue] -> ShowS
showJSRational :: Rational -> ShowS
showJSRational' :: Bool -> Rational -> ShowS
showJSObject :: JSObject JSValue -> ShowS
showJSValue :: JSValue -> ShowS
makeObj :: [(String, JSValue)] -> JSValue
valFromObj :: JSON a => String -> JSObject JSValue -> Result 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)
show/hide Instances
Serialization to and from JSValues
class JSON a whereSource
The class of types serialisable to and from JSON
Methods
readJSON :: JSValue -> Result aSource
showJSON :: a -> JSValueSource
readJSONs :: JSValue -> Result [a]Source
showJSONs :: [a] -> JSValueSource
show/hide Instances
Encoding and Decoding
data Result a Source
A type for parser results
Constructors
Ok a
Error String
show/hide Instances
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
show/hide Instances
toJSString :: String -> JSStringSource
Turn a Haskell string into a JSON string.
fromJSString :: JSString -> StringSource
data JSObject e Source
As can association lists
show/hide Instances
toJSObject :: [(String, a)] -> JSObject aSource
Make JSON object out of an association list.
fromJSObject :: JSObject e -> [(String, e)]Source
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
showJSRational' :: Bool -> Rational -> ShowSSource
showJSObject :: JSObject JSValue -> ShowSSource
Show an association list in JSON format
showJSValue :: JSValue -> ShowSSource
Show JSON values
Instance helpers
makeObj :: [(String, JSValue)] -> JSValueSource
valFromObj :: JSON a => String -> JSObject JSValue -> Result aSource
Pull a value out of a JSON object.
Produced by Haddock version 2.6.1