react - ¿Cómo creo un json en clojurescript
clojurescript tutorial (3)
Encontré una función here
(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))
Hace exactamente lo que necesitaba. También existe la función inversa, a saber, js->clj
en el núcleo de ClojureScript.
Tengo algunas claves que quiero interoperar con algunas bibliotecas de JavaScript. En mi código clojurescript hago un análisis y creo una lista de mapas. algo como
[{:prop1 "value1" :prop2 "value2"}, {:prop1 "something else" :prop2 "etc"}...]
Necesito pasar esto a un javascript funciona como
[{prop1: "value1", prop2: "value2}, {..} ...]
No estoy seguro de cómo devolver un objeto javascript desde mi función clojurescript. ¿Hay una manera de serializar mapas y listas anidadas a objetos javascript? ¿O una forma de crear un nuevo objeto javascript y luego establecer propiedades en él?
Esto funciona para mí:
(defn clj->json
[ds]
(.stringify js/JSON (clj->js ds)))
uso:
(let [json (clj->json data-structure)]
;; do something with json
)
Sólo por el bien de las personas que buscan algo similar.
El núcleo de ClojureScript ahora contiene una función clj->js
.