November 25, 2019
By: Kevin
json和edn的在线转化工具
(require '[reagent.core :as r])
(require '[cljs.reader :as reader])
json格式化
将不规范的json(key不用引号引起来)的形式转化为规范化形式
(defn unformated-json-input [json]
[:textarea {
:rows 10
:cols 75
:value @json
:on-change #(reset! json (->> % .-target .-value))}])
(defn json->json [json]
(try (-> json
(clojure.string/replace #"'" "\"" )
(clojure.string/replace #"(\w*)(\s*:)" "\"$1\"$2" )
(#(.parse js/JSON %))
(#(.stringify js/JSON % nil 2)))
(catch :default e
"json格式不正确")))
(defn container []
(let [val (r/atom "{akey : 'format'}")]
(fn []
[:div
[:h3 "edn:"]
[unformated-json-input val]
[:h3 "json"]
[:div (json->json @val)]])))
edn转json
(defn edn-input [edn]
[:textarea {
:rows 10
:cols 75
:value (with-out-str (cljs.pprint/pprint @edn))
:on-change #(reset!
edn
(reader/read-string (-> % .-target .-value)))}])
(defn edn->json [edn]
(->> edn
clj->js
(#(.stringify js/JSON % nil 2))))
(defn container []
(let [val (r/atom {:json "format"})]
(fn []
[:div
[:h3 "edn:"]
[edn-input val]
[:h3 "json"]
[:div (edn->json @val)]])))
json转edn
(defn json-input [json]
[:textarea {
:rows 10
:cols 75
:value @json
:on-change #(reset! json (->> % .-target .-value))}])
(defn json->edn [json]
(->> json
(.parse js/JSON )
(#(js->clj % :keywordize-keys true))
))
(defn container []
(let [val (r/atom "{\"json\": \"format\"}")]
(fn []
[:div
[:h3 "json:"]
[json-input val]
[:h3 "edn"]
[:div (-> @val json->edn cljs.pprint/pprint with-out-str)]])))