JSON
To use the bindings from this module:
(import :std/text/json)
read-json
(read-json [input = (current-input-port)]) -> json | error
input := input source to read JSON data
Returns JSON object from given input source. Signals an error if fails to parse JSON
The input source can be:
- An input port.
- A BufferedStringReader.
- A BufferedReader.
write-json
(write-json obj [sink = (current-output-port)]) -> void | error
obj := JSON object
sink := output sink to write JSON data
Writes JSON object obj optionally given port. Defaults to using current-output-port. Signals an error on failed write.
The output sink can be:
- An output port.
- A BufferedStringWriter.
- A BufferedWriter.
- A StringWriter.
- A Writer.
string->json-object
(string->json-object str) -> json | error
str := a string of JSON data
Parses given str and returns JSON object or signals an error fails to parse.
json-object->string
(json-object->string obj) -> string | error
obj := JSON object
Returns a newly allocated string with JSON object as a string. Signals an error if fails to parse JSON.
json-symbolic-keys
json-symbolic-keys
Boolean parameter to control should decoded hashes have symbols as keys? Defaults to #t. #f means that keys will be strings.
Examples
> (hash->list (string->json-object "{\"a\":1}"))
((a . 1))
> (parameterize ((json-symbolic-keys #f))
(hash->list (string->json-object "{\"a\":1}")))
(("a" . 1))
json-list-wrapper
json-list-wrapper
Parameter to control how JSON lists should be transformed.
Defaults to identity
, which means keep them as lists.
If bound to list->vector
then JSON lists will be parsed as vectors.
Examples
> (string->json-object "[\"a\",1]")
("a" 1)
> (parameterize ((json-list-wrapper list->vector))
(string->json-object "[\"a\",1]"))
#("a" 1)