我有一些clojurescript,我想与一些JavaScript库互操作.在我的clojurescript代码中,我做了一些分析,并提出了一个地图列表.就像是
[{:prop1 "value1" :prop2 "value2"}, {:prop1 "something else" :prop2 "etc"}...]
Run Code Online (Sandbox Code Playgroud)
我需要将它传递给javascript函数as
[{prop1: "value1", prop2: "value2}, {..} ...]
Run Code Online (Sandbox Code Playgroud)
我不知道如何从我的clojurescript函数返回一个javascript对象.有没有办法将嵌套的地图和列表序列化为javascript对象.或者一种创建新javascript对象然后在其上设置属性的方法?
Rod*_*ada 42
只是为了寻找类似的东西.
ClojureScript核心现在包含一个clj->js函数.
Ste*_*sen 15
我在这里找到了一个功能
(defn clj->js
"Recursively transforms ClojureScript maps into Javascript objects,
other ClojureScript colls into JavaScript arrays, and ClojureScript
keywords into JavaScript strings.
Borrowed and updated from mmcgrana."
[x]
(cond
(string? x) x
(keyword? x) (name x)
(map? x) (.-strobj (reduce (fn [m [k v]]
(assoc m (clj->js k) (clj->js v))) {} x))
(coll? x) (apply array (map clj->js x))
:else x))
Run Code Online (Sandbox Code Playgroud)
完全符合我的需要.还有反函数,即js->clj在ClojureScript核心中.
这对我有用:
(defn clj->json
[ds]
(.stringify js/JSON (clj->js ds)))
Run Code Online (Sandbox Code Playgroud)
用法:
(let [json (clj->json data-structure)]
;; do something with json
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9830 次 |
| 最近记录: |