/usr/lib/swipl/library/ext/json/json.pl
All Application Manual Name SummaryHelp

  • ext
    • json
      • json.pl -- Reading and writing JSON serialization
        • atom_json_term/3
        • json_read/2
        • json_read/3
        • json_write/2
        • json_write/3
        • json_write_hook/4
        • json_dict_pairs/2
        • is_json_term/1
        • is_json_term/2
        • json_read_dict/2
        • json_read_dict/3
        • json_write_dict/2
        • json_write_dict/3
        • atom_json_dict/3
        • json/4
      • json_grammar.pl -- JavaScript grammar
      • json_convert.pl
      • json_rpc_client.pl -- JSON RPC client
      • json_rpc_server.pl
      • json_schema.pl -- JSON Schema reader and validator
 json_read(+Stream, -Term) is det
 json_read(+Stream, -Term, +Options) is det
Read next JSON value from Stream into a Prolog term. The canonical representation for Term is:
  • A JSON object is mapped to a term json(NameValueList), where NameValueList is a list of Name=Value. Name is an atom created from the JSON string.
  • A JSON array is mapped to a Prolog list of JSON values.
  • A JSON string is mapped to a Prolog atom
  • A JSON number is mapped to a Prolog number
  • The JSON constants true and false are mapped -like JPL- to @(true) and @(false).
  • The JSON constant null is mapped to the Prolog term @(null)

Here is a complete example in JSON and its corresponding Prolog term.

{ "name":"Demo term",
  "created": {
    "day":null,
    "month":"December",
    "year":2007
  },
  "confirmed":true,
  "members":[1,2,3]
}
json([ name='Demo term',
       created=json([day= @null, month='December', year=2007]),
       confirmed= @true,
       members=[1, 2, 3]
     ])

The following options are processed:

null(+NullTerm)
Term used to represent JSON null. Default @(null)
true(+TrueTerm)
Term used to represent JSON true. Default @(true)
false(+FalseTerm)
Term used to represent JSON false. Default @(false)
end_of_file(+ErrorOrTerm)
If end of file is reached after skipping white space but before any input is processed take the following action (default error):
  • If ErrorOrTerm == error, throw an unexpected end of file syntax error
  • Otherwise return ErrorOrTerm.

Returning an status term is required to process Concatenated JSON. Suggested values are @(eof) or end_of_file.

value_string_as(+Type)
Prolog type used for strings used as value. Default is atom. The alternative is string, producing a packed string object. Please note that codes or chars would produce ambiguous output and are therefore not supported.
See also
- json_read_dict/3 to read a JSON term using the version 7 extended data types.