diff --git a/basis/json/writer/writer-tests.factor b/basis/json/writer/writer-tests.factor index 692a264d0a..50304d0a85 100644 --- a/basis/json/writer/writer-tests.factor +++ b/basis/json/writer/writer-tests.factor @@ -1,4 +1,4 @@ -USING: json.writer tools.test json.reader json ; +USING: hashtables json.writer tools.test json.reader json namespaces ; IN: json.writer.tests { "false" } [ f >json ] unit-test @@ -18,3 +18,9 @@ SYMBOL: testSymbol { """"testSymbol"""" } [ testSymbol >json ] unit-test [ { 0.5 } ] [ { 1/2 } >json json> ] unit-test + +[ "{\"b-b\":\"asdf\"}" ] + [ "asdf" "b-b" associate f jsvar-encode? [ >json ] with-variable ] unit-test + +[ "{\"b_b\":\"asdf\"}" ] + [ "asdf" "b-b" associate >json ] unit-test diff --git a/basis/json/writer/writer.factor b/basis/json/writer/writer.factor index e374919039..a72d1383a2 100644 --- a/basis/json/writer/writer.factor +++ b/basis/json/writer/writer.factor @@ -33,7 +33,10 @@ M: real json-print ( num -- ) M: sequence json-print ( array -- ) CHAR: [ write1 [ >json ] map "," join write CHAR: ] write1 ; -TR: jsvar-encode "-" "_" ; +! if jsvar-encode? is true, then implement jsvar-encode +SYMBOL: jsvar-encode? +t jsvar-encode? set-global +TR: jsvar-encode "-" "_" ; : tuple>fields ( object -- seq ) [ @@ -45,7 +48,7 @@ M: tuple json-print ( tuple -- ) M: hashtable json-print ( hashtable -- ) CHAR: { write1 - [ [ swap jsvar-encode >json % CHAR: : , >json % ] "" make ] + [ [ swap jsvar-encode? get [ jsvar-encode ] when >json % CHAR: : , >json % ] "" make ] { } assoc>map "," join write CHAR: } write1 ;