diff --git a/modules/json/src/main/clojure/clojure/contrib/json.clj b/modules/json/src/main/clojure/clojure/contrib/json.clj index 0a07b59c..a69195ea 100644 --- a/modules/json/src/main/clojure/clojure/contrib/json.clj +++ b/modules/json/src/main/clojure/clojure/contrib/json.clj @@ -238,9 +238,7 @@ (let [[k v] (first x)] (when (nil? k) (throw (Exception. "JSON object keys cannot be nil/null"))) - (.print out \") - (.print out (as-str k)) - (.print out \") + (write-json-string (as-str k) out) (.print out \:) (write-json v out)) (let [nxt (next x)] diff --git a/modules/json/src/test/clojure/clojure/contrib/test_json.clj b/modules/json/src/test/clojure/clojure/contrib/test_json.clj index c38dbc6a..a4290e5c 100644 --- a/modules/json/src/test/clojure/clojure/contrib/test_json.clj +++ b/modules/json/src/test/clojure/clojure/contrib/test_json.clj @@ -185,6 +185,9 @@ (deftest can-accept-eof (is (= ::eof (read-json "" true false ::eof)))) +(deftest characters-in-map-keys-are-escaped + (is (= (json-str {"\"" 42}) "{\"\\\"\":42}"))) + ;;; Pretty-printer (deftest pretty-printing