问题标签 [edn]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
6276 浏览

clojure - 如何使用 clojure.edn/read 获取文件中的对象序列?

Clojure 1.5 引入clojure.edn,其中包括一个读取函数,该函数需要一个PushbackReader.

如果我想阅读前五个对象,我可以这样做:

我怎样才能打印出所有的对象?考虑到其中一些可能是 nil,似乎我需要检查 EOF 或类似的东西。我想要一系列与我从中得到的对象相似的对象line-seq

0 投票
3 回答
2142 浏览

clojure - 如何在不发出 ajax 请求的情况下将 edn 从 clojure 传递给 clojurescript(即通过打嗝生成的页面)

我正在使用 clojure 和 clojurescript 开发 RIA。后端使用打嗝来生成结果 html,比如

如何在生成的 html 中将 edn(hashmap、vector 等) 传递给 clojurescript,即不进行 ajax 调用?

我想让打嗝做这样的事情:

并且能够以某种方式(例如通过名称)从 cljs 访问传递的 edn。

目前我的实现有点hacky并将edn存储在全局js var中

并且在 cljs 方面确实喜欢

也许有更惯用的方式来实现这一目标?

0 投票
2 回答
3128 浏览

clojure - 如何将 *data-readers* 与 edn 一起使用?

我尝试遵循 的文档clojure.instant/read-instant-timestamp,内容如下:

以下结果出乎意料:

如何使用*data-readers*绑定?Clojure 版本 1.5.1。

0 投票
1 回答
1872 浏览

clojure - 我们可以将某种规范的 edn 响应用于 ring 吗?

我一直在阅读 edn 规范并希望将其集成到我的应用程序中。但是,我不知道如何在 clojure 和客户端之间传输 edn 请求。我们是否将内容类型的 application/edn 放在响应标头中并仅发送 prn 输出字符串?

0 投票
2 回答
1684 浏览

clojure - 在 Clojure / EDN 中序列化排序的地图?

如何在 Clojure 中序列化和反序列化已排序的映射?

例如:

我注意到了什么:

  1. 排序后的地图以与 REPL 中未排序的地图相同的方式显示。这有时看起来很方便,但有时却不方便。
  2. EDN不支持已排序的地图
  3. Clojure 确实支持读者的自定义标记文字

其他资源:

0 投票
1 回答
12508 浏览

clojure - 截至 2013 年 8 月,在 Clojure 中编写 EDN 文件的“正确”方式是什么?

我想从 Clojure 中写出一个 EDN 数据文件作为标记文字。尽管clojure.edn API 包含readand read-string,但没有编写器。我熟悉这里报告的问题。基于此,我的理解是prpr-str函数是今天要使用的。

我想与 StackOverflow 社区核实一下,看看以下内容是否被认为是写出 EDN 文件的“正确”方式:

如果您在生产中使用 EDN,您如何写出 EDN 文件?和上面的一样吗?有什么我需要注意的问题吗?

更新

Clojure Cookbook 条目“Emitting Records as EDN Values”包含对此问题的更全面的解释以及导致有效 EDN 标签的处理方法。

0 投票
2 回答
2046 浏览

clojure - 您如何在 clojurescript 中使用由 edn 阅读器创建的地图?

正如我所料,这会:barClojure中打印:

但这会打印nilClojureScript中:

为了让事情变得更奇怪,正如我所料,这:barClojureScript中打印:

如何访问由读者创建的地图中的值?这是字符编码的事情吗?

编辑

这是评论中要求的命名空间:

0 投票
1 回答
538 浏览

templates - Clojure EDN 作为代码生成元数据源

Clojure 新手,想知道如何使用它来使我用其他语言更容易编程。

我想做的一件事是使用 Clojure 进行代码生成。

例如,给定来自数据文件(EDN 格式)的输入,我应该如何(1)遍历这个结构或(2)将数据推送到现有的模板机制中?

下面的数据将用于定义简单的 REST API,以便您可以从中生成客户端。使用不同的模板生成多种语言的客户端。

结果代码将类似于

注意:我的最终目标是通过 C# 将这些作为 System.Net.Http.HttpClient 调用,但也能够将它们转换为 JavaScript/Ajax 调用

0 投票
3 回答
9520 浏览

clojure - Clojure 和 ClojureScript:clojure.core/read-string、clojure.edn/read-string 和 cljs.reader/read-string

我不清楚所有这些读取字符串函数之间的关系。好吧,很明显clojure.core/read-string可以读取任何由pr[n]或输出的序列化字符串print-dup。同样清楚的是,clojure.edn/read-string确实会读取根据EDN 规范格式化的字符串。

但是,我是从 Clojure Script 开始的,不清楚是否cljs.reader/read-string符合。这个问题是由我有一个以这种方式发出 clojure 代码序列化的 Web 服务的事实触发的:

那是产生包含数据类型的对象序列化。然而,这是不可读的cljs.reader/read-string。我总是收到这种类型的错误:

起初,我以为这个错误是由 rhino REPL 引发的,cljs-ajax但在cljs.reader/read-stringrhino REPL 中测试后,我得到了同样的错误,这意味着它是自己引发的cljs.reader/read-string。它是由maybe-read-tagged-type函数抛出的,cljs.reader但不清楚这是因为阅读器只使用 EDN 数据,还是......?

此外,从 Clojure 文档的差异中,唯一说的是:

这表明它们应该具有完全相同的行为。

0 投票
1 回答
1151 浏览

clojure - 在 clojure 中将大型数据结构作为 EDN 写入磁盘

在 Clojure 中将数据结构写入磁盘的最惯用方法是什么,以便我可以使用 edn/read 将其读回?按照Clojure 食谱中的建议,我尝试了以下方法:

但是,这只会写入前 100 个项目,然后是“...”。我也试过(prn (doall large-data-structure))了,结果是一样的。

我已经设法通过逐行编写来做到这一点(doseq [i large-data-structure] (pr i)),但是我必须在序列的开头和结尾手动添加括号以获得所需的结果。