Availability:
:- use_module(library(http/json)).
- 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
andfalse
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)
orend_of_file
. - If ErrorOrTerm
- value_string_as(+Type)
- Prolog type used for strings used as value. Default is
atom
. The alternative isstring
, producing a packed string object. Please note thatcodes
orchars
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.