|Did you know ...||Search Documentation:|
|http_json.pl: HTTP JSON Plugin module|
json.pldescribes how JSON objects are represented in Prolog terms.
json_convert.plconverts between more natural Prolog terms and json terms.
This module inserts the JSON parser for documents of MIME type
requested through the
Typically JSON is used by Prolog HTTP servers. This module supports two JSON representations: the classical representation and the new representation supported by the SWI-Prolog version 7 extended data types. Below is a skeleton for handling a JSON request, answering in JSON using the classical interface.
handle(Request) :- http_read_json(Request, JSONIn), json_to_prolog(JSONIn, PrologIn), <compute>(PrologIn, PrologOut), % application body prolog_to_json(PrologOut, JSONOut), reply_json(JSONOut).
When using dicts, the conversion step is generally not needed and the code becomes:
handle(Request) :- http_read_json_dict(Request, DictIn), <compute>(DictIn, DictOut), reply_json(DictOut).
This module also integrates JSON support into the http client
http_client.pl. Posting a JSON query and
processing the JSON reply (or any other reply understood by http_read_data/3)
is as simple as below, where Term is a JSON term as described in
and reply is of the same format if the server replies with JSON.
..., http_post(URL, json(Term), Reply, )
dict. If the value is
dict, json_read_dict/3 is used.
|MediaType||is a term Type/SubType, where both Type and SubType are atoms.|
http_post(URL, json(Term), Reply, Options) http_post(URL, json(Term, Options), Reply, Options)
If Options are passed, these are handed to json_write/3. In addition, this option is processed:
dict, json_write_dict/3 is used to write the output. This is default if
term(default) to generate a classical Prolog term or
dictto exploit the SWI-Prolog version 7 data type extensions. See json_read_dict/3.
domain_error(mimetype, Found)if the mimetype is not known (see json_type/1).
domain_error(method, Method)if the request is not a
charset=UTF8should not be required because JSON is defined to be UTF-8 encoded, but some clients insist on it.
term(classical json representation) or
dictto use the new dict representation. If omitted and Term is a dict,
dictis assumed. SWI-Prolog Version 7.