【问题标题】:Parse Clojure Script to JSON in Javascript在 Javascript 中将 Clojure 脚本解析为 JSON
【发布时间】:2017-09-08 12:30:27
【问题描述】:

我有一个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}]

我想要 json 格式的上述 clojure 数据。从clojure方面,我总是可以使用柴郡。但我想在 javascript 的 lient 端做到这一点

【问题讨论】:

  • 所以在客户端/js 上,你的数据/输入是字符串?即"[{:dt [2017 6 30], :cashflow 431782} {:dt [2018... 并想要解析它?
  • @birdspider 是的
  • 你想要它作为 cljs 数据还是明确地作为 json ?
  • @birdspider 我想将此 cljs 显式解析为 json。有图书馆吗?

标签: javascript json clojure clojurescript


【解决方案1】:

正如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 库提供的任何操作

例如:

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

【讨论】:

  • 嘿,我非常感谢您的即时回复。但这是你从clojure方面做的。我想像在 javascript 中那样在客户端执行此操作。
  • @SufiyanAnsari 是客户端。 cljs 是clojurescript。
  • 不,这都是 clojurescript。正如你的问题有一个 clojurescript 标签 - 我假设你在客户端有 clojurescript
  • @SufiyanAnsari 为琐碎的语法编写可靠的解析器超出了“链接”......甚至是 SO 问题的范围。我的意思是你必须从 scratch 开始。只需在客户端上使用 clojurescript。或者在服务器上序列化为 JSON。
  • @SufiyanAnsari 我刚刚在 google 上花了 4 秒,找到了一个 js/edn 解析器 - 祝你好运:)
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-30
    • 1970-01-01
    • 1970-01-01
    • 2021-08-21
    • 1970-01-01
    • 2011-07-02
    相关资源
    最近更新 更多