问题标签 [cheshire]

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 投票
4 回答
248 浏览

clojure - 如何调整来自 next.jdbc 的 IReduceInit 以使用 cheshire 将 JSON 流式传输到使用 ring 的 HTTP 响应

tl;博士如何将 IReduceInit 转换为转换值的惰性序列

我有一个数据库查询,它产生了一个相当大的数据集,用于在客户端上进行实时旋转(百万或两行,25 个属性 - 对于现代笔记本电脑来说没问题)。

我的(简化的)堆栈是调用 clojure.jdbc 来获取(我认为是惰性的)结果行序列。我可以通过 ring-json 中间件将其作为主体传递出去,从而将其序列化。ring-json 在堆上构建响应字符串存在问题,但是从 0.5.0 开始可以选择将响应流式传输出去。

我通过分析几个失败案例发现,实际上 clojure.jdbc 在将其返回之前将整个结果集实现在内存中。没问题!reducible-query我决定转向新的 next.jdbc,而不是在那个库中工作。

next.jdbc 中的关键操作是plan返回一个 IReduceInit,我可以使用它来运行查询并获取结果集...

然而,这实现了整个结果集,并且在上述情况下会给我所有的 id 预先和内存。对一个人来说不是问题,但我通常有很多。

如果我给出一个起始值,我可以减少 IReduceInit 计划,所以我可以在减少函数中进行输出......(谢谢@amalloy)

...但理想情况下,我想在对它们应用转换函数后将此 IReduceInit 转换为值的惰性序列,因此我可以将它们与 ring-json 和 cheshire 一起使用。我没有看到任何明显的方法。

0 投票
2 回答
383 浏览

clojure - 如何将 Java 字符串转换为 EDN 对象?

在 Clojure 中,我使用 cheshire ( https://github.com/dakrone/cheshire ) 库的“生成字符串”函数将 EDN 转换为 JSON。

如果我直接使用 Clojure 中的 EDN 数据调用它,它工作正常,即

但是如果我从 Java 调用上面的函数并以 Java 字符串的形式将上面的相同内容传递给它,它就行不通了

我怎样才能解决这个问题?

0 投票
1 回答
373 浏览

clojure - 如何将 EDN 输出转换为定义了自定义阅读器的 JSON

在 Clojure 中,我使用 cheshire ( https://github.com/dakrone/cheshire ) 库的“生成字符串”函数将 EDN 转换为 JSON。

它适用于没有自定义阅读器的 EDN。例如:

但是,如果 EDN 具有调用 java 代码创建新对象的自定义阅读器,则它无法将 EDN 输出转换为 JSON。

例如:

如果 EDN 文件如上所示,它无法生成 JSON 输出,因为 EDN 输出包含创建的对象的哈希码,如

有没有办法从上面的输出中生成 JSON?

提前致谢。

0 投票
1 回答
177 浏览

clojure - 如何使用 Cheshire 自定义编码器以 JSON 格式打印 EDN 输出

我是 Clojure 的新手,我正在尝试使用针对 java 中定义的类的 Cheshire 自定义编码器将 EDN 输出打印为有效的 JSON 格式。

这会生成以下输出:

我想以正确的 JSON 格式打印它,如下所示。我怎样才能实现它?

提前致谢!

0 投票
4 回答
165 浏览

json - 在 Clojure 中编码为 JSON 时如何表示非标准 java 对象?

我有一个标准的clojure地图。键是关键字,值是任意值。它们可以是nil、数字、字符串或任何其他类型的 JVM 对象/类。

我需要知道如何将此映射编码为 JSON,以便“正常”值映射到通常的 JSON 值(例如关键字 -> 字符串、整数 -> JSON 数字等),而任何其他类的值映射到这些值的字符串表示形式,如下所示:

如此编码:

我想这样做是因为我的程序是一个 CLI 解析库,并且我正在与库的调用者一起构建这个映射,所以我不完全知道其中将包含哪些类型的数据。但是,我想将它打印到屏幕上,以帮助调用者进行调试。我曾试图天真地将这张地图提供给 cheshire,但是当我这样做时,cheshire 一直因这个错误而窒息:

奖励:我正在努力减少我的依赖计数,并且我已经将cheshire作为我的 JSON 库进行了审查,但是如果你能找到一种方法在没有它的情况下执行上述操作,则满分。

0 投票
2 回答
215 浏览

json - 使用 Cheshire 解析为 json - generate-string 和 parse-string

我正在尝试导出 json-schema 以在 javascript 中的 Clojure 之外使用。我能够生成这个:

这对 Clojure 来说很好

使用使用生成字符串的柴郡,我可以得到:

这基本上是我想要的,但没有引号。我在上面尝试了 Cheshire 的parse-string,我得到:

更接近,但它的冒号被剥离了。我想

我觉得这应该很容易,但我错过了一些东西。如果没有以下内容,我看不出它是如何有效的 json:

如何使用冒号创建 json?