# JSON JSON library for using API of ChatGPT. # usage invoke -d option and use json library. ``` npl -d use_module(json). ?- term_json(foo(1),J). J = {"predicate":"foo","argument":[1]} . yes ?- ``` # Spec term_json(Term,Json). if Term is variable, get Prolog term converted from JSON. if Json is variable, get Json code converter from Prolog term. ``` test(predicate) :- term_json(foo(1),J), J = {"predicate":"foo","argument":[1]}. test(rpredicate) :- J = {"predicate":"foo","argument":[1]}, term_json(T,J), T = foo(1). test(clause) :- term_json((foo(1):-bar(2)),J), J = {"head":{"predicate":"foo","argument":[1]},"body":{"predicate":"bar","argument":[2]}}. test(rclause) :- J = {"head":{"predicate":"foo","argument":[1]},"body":{"predicate":"bar","argument":[2]}}, term_json(T,J), T = ((foo(1):-bar(2))). test(true) :- term_json(T,"true"), T = '@true'. test(rtrue) :- term_json('@true',J), J = "true". test(null) :- term_json(T,"null"), T = '@null'. test(rnull) :- term_json('@null',J), J = "null". test(basic) :- term_json([id=1,id=2],J), J = [{"id":1},{"id":2}]. test(rbasic) :- J = [{"id":1},{"id":2}], term_json(T,J), T = [id=1,id=2]. ``` # Unicode Unicode is displayed as is. It will not be converted into escape sequences. The purpose of this library is communication with ChatGPT, and using Unicode directly is not a problem. # Caution To simplify JSON parsing, the handling of strings has been modified. By default, strings are represented enclosed in $. However, when using the JSON module, strings are represented enclosed in ". To revert to the original behavior, use reset_json.