[ library(json) | Reference Manual | Alphabetic Index ]

# json_read(+Stream, -JsonTerm, +Options)

Read a JSON element from a stream

Stream
  Input stream
JsonTerm
  Term describing JSON object read
Options
  List of options

## Description

Read a JSON element. In the resulting data structure, JSON elements are represented as follows:

object
  Structure with functor {}/1 whose single argument is a list of Name:Value terms, where Name is a string and Value a JSON element, e.g. `{["a":123,"b":[4,5]]}`, or the empty object `{}`.
array
  A list whose elements are JSON elements, e.g. `[1,{"a":true}]`
string
  A string
number
  An integer or float
true
  the atom `true`
false
  the atom `false`
null
  the atom `null`

Options is a list that can contain

names_as_atoms
  return object key names as atoms instead of strings

## Examples

        ?- json_read(input, JsonTerm, []).
         {
           "foo":123,
           "bar":["hello",3,4.5],
           "baz":true,
           "zut":null
         }

        JsonTerm = {["foo":123, "bar":["hello",3,4.5], "baz":true, "zut":null]}
        Yes (0.00s cpu)

        ?- json_read(input, JsonTerm, [names_as_atoms]).
         {
           "foo":123,
           "bar":"hello",
           "baz":true
         }

        JsonTerm = {[foo:123, bar:"hello", baz:true]}
        Yes (0.00s cpu)

        ?- json_read(input, JsonTerm, []).
         foobar

         syntax error: invalid JSON syntax in json_read / 3
        Abort

## See Also

json_write / 3