Availability:
:- use_module(library(http/json)).
[det]json_read(+Stream,
-Term)
- 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
trueandfalseare mapped -like JPL- to @(true) and @(false). - The JSON constant
nullis 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 thatcodesorcharswould 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.