问题标签 [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.
clojure - 如何使用 clojure.edn/read 获取文件中的对象序列?
Clojure 1.5 引入clojure.edn
,其中包括一个读取函数,该函数需要一个PushbackReader
.
如果我想阅读前五个对象,我可以这样做:
我怎样才能打印出所有的对象?考虑到其中一些可能是 nil,似乎我需要检查 EOF 或类似的东西。我想要一系列与我从中得到的对象相似的对象line-seq
。
clojure - 如何在不发出 ajax 请求的情况下将 edn 从 clojure 传递给 clojurescript(即通过打嗝生成的页面)
我正在使用 clojure 和 clojurescript 开发 RIA。后端使用打嗝来生成结果 html,比如
如何在生成的 html 中将 edn(hashmap、vector 等) 传递给 clojurescript,即不进行 ajax 调用?
我想让打嗝做这样的事情:
并且能够以某种方式(例如通过名称)从 cljs 访问传递的 edn。
目前我的实现有点hacky并将edn存储在全局js var中
并且在 cljs 方面确实喜欢
也许有更惯用的方式来实现这一目标?
clojure - 如何将 *data-readers* 与 edn 一起使用?
我尝试遵循 的文档clojure.instant/read-instant-timestamp
,内容如下:
以下结果出乎意料:
如何使用*data-readers*
绑定?Clojure 版本 1.5.1。
clojure - 我们可以将某种规范的 edn 响应用于 ring 吗?
我一直在阅读 edn 规范并希望将其集成到我的应用程序中。但是,我不知道如何在 clojure 和客户端之间传输 edn 请求。我们是否将内容类型的 application/edn 放在响应标头中并仅发送 prn 输出字符串?
clojure - 在 Clojure / EDN 中序列化排序的地图?
如何在 Clojure 中序列化和反序列化已排序的映射?
例如:
我注意到了什么:
- 排序后的地图以与 REPL 中未排序的地图相同的方式显示。这有时看起来很方便,但有时却不方便。
- EDN不支持已排序的地图。
- Clojure 确实支持读者的自定义标记文字。
其他资源:
clojure - 截至 2013 年 8 月,在 Clojure 中编写 EDN 文件的“正确”方式是什么?
我想从 Clojure 中写出一个 EDN 数据文件作为标记文字。尽管clojure.edn API 包含read
and read-string
,但没有编写器。我熟悉这里报告的问题。基于此,我的理解是pr
和pr-str
函数是今天要使用的。
我想与 StackOverflow 社区核实一下,看看以下内容是否被认为是写出 EDN 文件的“正确”方式:
如果您在生产中使用 EDN,您如何写出 EDN 文件?和上面的一样吗?有什么我需要注意的问题吗?
更新
Clojure Cookbook 条目“Emitting Records as EDN Values”包含对此问题的更全面的解释以及导致有效 EDN 标签的处理方法。
clojure - 您如何在 clojurescript 中使用由 edn 阅读器创建的地图?
正如我所料,这会:bar
在Clojure中打印:
但这会打印nil
在ClojureScript中:
为了让事情变得更奇怪,正如我所料,这:bar
在ClojureScript中打印:
如何访问由读者创建的地图中的值?这是字符编码的事情吗?
编辑
这是评论中要求的命名空间:
templates - Clojure EDN 作为代码生成元数据源
Clojure 新手,想知道如何使用它来使我用其他语言更容易编程。
我想做的一件事是使用 Clojure 进行代码生成。
例如,给定来自数据文件(EDN 格式)的输入,我应该如何(1)遍历这个结构或(2)将数据推送到现有的模板机制中?
下面的数据将用于定义简单的 REST API,以便您可以从中生成客户端。使用不同的模板生成多种语言的客户端。
结果代码将类似于
注意:我的最终目标是通过 C# 将这些作为 System.Net.Http.HttpClient 调用,但也能够将它们转换为 JavaScript/Ajax 调用
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-string
rhino REPL 中测试后,我得到了同样的错误,这意味着它是自己引发的cljs.reader/read-string
。它是由maybe-read-tagged-type
函数抛出的,cljs.reader
但不清楚这是因为阅读器只使用 EDN 数据,还是......?
此外,从 Clojure 文档的差异中,唯一说的是:
这表明它们应该具有完全相同的行为。
clojure - 在 clojure 中将大型数据结构作为 EDN 写入磁盘
在 Clojure 中将数据结构写入磁盘的最惯用方法是什么,以便我可以使用 edn/read 将其读回?按照Clojure 食谱中的建议,我尝试了以下方法:
但是,这只会写入前 100 个项目,然后是“...”。我也试过(prn (doall large-data-structure))
了,结果是一样的。
我已经设法通过逐行编写来做到这一点(doseq [i large-data-structure] (pr i))
,但是我必须在序列的开头和结尾手动添加括号以获得所需的结果。