Load a JSON string into a data structure.
Also, create a new data structure and serialize it into JSON.

Use objects and arrays (as appropriate for your language)
and make sure your JSON is valid (https://jsonformatter.org).

 
;; JSON standard types : strings, numbers, and arrays (vectors)
(export-json #(6 7 8 9))  →   "[6,7,8,9]"
(export-json #("alpha" "beta" "gamma"))  →   "["alpha","beta","gamma"]"
 
(json-import "[6,7,8,9]")  →   #( 6 7 8 9)
(json-import #<< ["alpha","beta","gamma"] >>#)  →   #( "alpha" "beta" "gamma")
 
;; EchoLisp types : dates, rational, complex, big int
(export-json 3/4)  →   "{"_instanceof":"Rational","a":3,"b":4}"
(json-import #<< {"_instanceof":"Rational","a":666,"b":42} >>#)  →   111/7
 
;; Symbols
(export-json 'Simon-Gallubert)  →   "{"_instanceof":"Symbol","name":"Simon-Gallubert"}"
(json-import #<< {"_instanceof":"Symbol","name":"Antoinette-de-Gabolde"} >>#)  
    →   Antoinette-de-Gabolde
 
;; Lists
(define my-list 
    (export-json '( 43 4 5 ( 6 7 ( 8 9 )))))
    →    "{"_instanceof":"List" ,"array":[43,4,5,{"_instanceof":"List",
    "array":[6,7,{"_instanceof":"List",
    "array":[8,9],"circular":false}],"circular":false}],"circular":false}"
 
(json-import my-list)  →   (43 4 5 (6 7 (8 9)))
 
;; Structures
(struct Person (name pict))  →   #struct:Person [name pict]
(define antoinette (Person "antoinette" "👰"))   →   # (antoinette 👰)
 
(export-json antoinette)  →   
    "{"_instanceof":"Struct", "struct":"Person","id":17,"fields":["antoinette","👰"]}"
(json-import 
    #<< {"_instanceof":"Struct","struct":"Person","id":18,"fields":["simon","🎩"]} >>#)  
	→   # (simon 🎩)
 
 