(import (gauche base) (rfc json) (srfi 1)) (begin (define json-object list) (define json-list vector) (define json-null 'null) (define json-object? list?) (define json-list? vector?) (define (json-null? obj) (eq? obj json-null)) (define (json-object-contains-key? obj key) (and (assoc key obj) #t)) (define array-handler list->vector) (define object-handler identity) (define (special-handler x) (case x ((true) #t) ((false) #f) (else => identity))) (define (string->json str) (parameterize ((json-array-handler array-handler) (json-object-handler object-handler) (json-special-handler special-handler)) (parse-json-string str))) (define json->string construct-json-string) (define (json-object-ref json key) (or (assoc-ref json key) ((json-key-not-found)))) (define json-list-ref vector-ref) (define json-list-length vector-length) (define json-object->alist identity) (define json-list->list vector->list))