JSON.Data
JSON.Parser
JSON.Pretty
JSON.Convert
This package provides data types, a parser and pretty printer, and conversion operations for JSON.
A JSON value can be a primitive, i.e. true,
false, null, a string or a number, an array of
JSON values or an object mapping strings to JSON values. In Curry, a
JSON value is represented by the data type JValue from the
JSON.Data module:
data JValue = JBool Bool
| JNull
| JString String
| JInt Int
| JNumber Float
| JArray [JValue]
| JObject JObjectJObject is an abstract type representing a mapping from
names (strings) to JSON values (see module JSON.Data for
operations in this type).
In contrast to raw JSON, this
definition distinguishes between integers and other numbers. Actually,
the JSON parser (see below) returns a number as a JInt if
its textual representation does not contain a decimal point and an
exponent.
parseJSON from JSON.Parser can be used to
parse a JSON string into a JValue:
> parseJSON "{ \"hello\": [\"world\", \"kiel\"] }"
Just (JObject [("hello", JArray [JString "world", JString "kiel"])])ppJSON from JSON.Pretty will turn a
JValue into a pretty printed string. If you want more
control over the layout of the resulting string, you can use
ppJValue from the same value to obtain a Doc
for Curry's Pretty module from a JValue.
The module JSON.Convert defines a defines a type class
ConvertJSON and various instances for standard types to
convert Curry values to JSON values and vice versa. As apparent from
these instance definitions, it is quite easy to define instances for
other user-defined data types.