简体   繁体   English

使用Javascript将Clojure脚本解析为JSON

[英]Parse Clojure Script to JSON in Javascript

I have a clojure data in the form of clojure format. 我有Clojure格式的Clojure数据。

[{:dt [2017 6 30], :cashflow 431782} {:dt [2018 6 30], :cashflow 452271} {:dt [2019 6 30], :cashflow 473785} {:dt [2020 6 30], :cashflow 496374}]

I want the above clojure data in the form json. 我想要上面的clojure数据以json的形式。 from clojure side i can always use Cheshire. 从clojure方面,我可以随时使用柴郡。 But I would like tto do it on the lient side in javascript 但是我想在javascript的许可方面做到这一点

As illustrated in this question ( cljs.reader/read-string ) and this ( clj->js ) the following should do the trick: 如这个问题( cljs.reader/read-string这个问题( clj->js )所示 ,以下应该可以解决问题:

cljs.user=> (def data-as-str 
  "[{:dt [2017 6 30], :cashflow 431782}
    {:dt [2018 6 30], :cashflow 452271}
    {:dt [2019 6 30], :cashflow 473785}
    {:dt [2020 6 30], :cashflow 496374}]")
#'cljs.user/data-as-str

cljs.user=> (cljs.reader/read-string data-as-str)
[{:dt [2017 6 30], :cashflow 431782}
 {:dt [2018 6 30], :cashflow 452271}
 {:dt [2019 6 30], :cashflow 473785}
 {:dt [2020 6 30], :cashflow 496374}]

; i have little experience in cljs but this should deliver
; a plain old js object
cljs.user=> (clj->js (cljs.reader/read-string data-as-str))
#js [#js {:dt #js [2017 6 30], :cashflow 431782}
     #js {:dt #js [2018 6 30], :cashflow 452271}
     #js {:dt #js [2019 6 30], :cashflow 473785}
     #js {:dt #js [2020 6 30], :cashflow 496374}]

from here on you could do whatever JSON.___ or other js-json lib provides 从这里开始,您可以执行JSON .___或其他js-json lib提供的任何操作

for example: 例如:

cljs.user=> (.stringify js/JSON 
              (clj->js (cljs.reader/read-string data-as-str)))
"[{\"dt\":[2017,6,30],\"cashflow\":431782},{\"dt\":[2018,6,30],\"cashflow\":452271},{\"dt\":[2019,6,30],\"cashflow\":473785},{\"dt\":[2020,6,30],\"cashflow\":496374}]"

您可以使用在JavaScript中实现的EDN解析器: github.com/shaunxcode/jsedn

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM