#lang scheme (require "simple-json.ss") (require "../prelude.ss") (provide render-jvalue put-jvalue) (define (render-jvalue o) (define (jpairs ps) (define (render-pair k v) (string-append k ": " (render-jvalue v))) (if (nothing? ps) "" (intercalate ", " (hash-map ps render-pair)))) (define (jvalues ps) (if (null? ps) "" (intercalate ", " (map render-jvalue ps)))) (cond [(jstring? o) (get-string o)] [(jnumber? o) (number->string (get-double o))] [(jnull? o) "null"] [(jbool? o) (if (get-bool o) "true" "false")] [(jobject? o) (string-append "{" (jpairs (get-object o)) "}")] [(jarray? o) (string-append "[" (jvalues (get-array o)) "]")])) (define (put-jvalue o) (print (render-jvalue o))) ;(define jnum (jnumber pi)) ;(define jstr (jstring "sample string")) ;(define jbln (jbool true)) ;(define jnil (jnull)) ;(define jobj ; (let ([h (make-hash)]) ; (hash-set! h "num" jnum) ; (hash-set! h "str" jstr) ; (hash-set! h "bool" jbln) ; (hash-set! h "null" jnil) ; (jobject h))) ;(define jary (jarray (list jnum jstr jbln jnil))) ;(define jcompobj ; (let ([h (make-hash)]) ; (hash-set! h "num" jnum) ; (hash-set! h "str" jstr) ; (hash-set! h "bool" jbln) ; (hash-set! h "null" jnil) ; (hash-set! h "object" jobj) ; (hash-set! h "array" jary) ; (jobject h))) ;(define jcompary (jarray (list jnum jstr jbln jnil jobj jary)))