This package provides data types, a parser and a pretty printer 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 = JTrue
| JFalse
| JNull
| JString String
| JNumber Float
| JArray [JValue]
| JObject [(String, JValue)]
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.