Did you know ... Search Documentation:
Predicate post_data_hook/3
 http:post_data_hook(+Term, +Out, +Options) is semidet[multifile, library(http/http_client)]
Hook to extend the datatypes supported by the post(Data) option of http_open/3. The default implementation supports prolog(Term), sending a Prolog term as application/x-prolog.
 http:post_data_hook(+Data, +Out:stream, +HdrExtra) is semidet[multifile, library(http/http_json)]
Hook implementation that allows http_post_data/3 posting JSON objects using one of the forms below.
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:

json_object(As)
If As is dict, json_write_dict/3 is used to write the output. This is default if json(Dict) is passed.
To be done
- avoid creation of intermediate data using chunked output.