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) - 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 is therefore not supported.
If json_read/3 encounters end-of-file before any real data it binds Term to the term @(end_of_file).
- See also
- json_read_dict/3 to read a JSON term using the version 7 extended data types.