2017-09-08 32 views
1

我有clojure格式的clojure数据。在JavaScript中将Clojure脚本解析为JSON

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

我想要上面的形式json的clojure数据。从clojure方面我总是可以使用柴郡。不过,我想TTO去做就lient侧的javascript

+0

等客户端/ JS你会有你的数据/输入为字符串?即''[{:dt [2017 6 30],:cashflow 431782} {:dt [2018 ...'并且想要解析它? – birdspider

+0

@birdspider是 –

+0

并且您希望它作为cljs数据或显式地作为json? – birdspider

回答

2

在本question (cljs.reader/read-string)this (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}] 

从这里你可以做任何JSON .___或其他JS-JSON lib中提供

例如:

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}]" 
+0

嘿,我真的很感谢你的直接回应,但是你从clojure那边做的,我想在客户端这样做,就像在javascript中一样 –

+0

@SufiyanAnsari你的问题有一个clojurescript标记 - 我认为你在客户端有clojurescript –

+0

nope这是所有clojurescript。 *,你必须编写一个自定义解析库 – birdspider