:- use_module(library(http/json_convert)). json_object(+Declaration)
json_object(+Declaration)library(record). E.g.
?- json_object
      point(x:int, y:int, z:int=0).
The type arguments are either types as know to library(error) 
or functor names of other JSON objects. The constant any 
indicates an untyped argument. If this is a JSON term, it becomes 
subject to json_to_prolog/2. 
I.e., using the type
list(any) causes the conversion to be executed on each 
element of the list.
If a field has a default, the default is used if the field is not 
specified in the JSON object. Extending the record type definition, 
types can be of the form (Type1|Type2). The type
null means that the field may not be present.
Conversion of JSON to Prolog applies if all non-defaulted arguments can be found in the JSON object. If multiple rules match, the term with the highest arity gets preference.