问题标签 [aeson]

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 回答
129 浏览

json - 将 Haskell JSON Lens 表达式转换回 JSON

如何为以下 Aeson Lens 表达式添加后缀

这样结果是 a Value(带有Object构造函数)而不是String?

0 投票
1 回答
486 浏览

json - 使用 Aeson 解码字符串时遇到问题

我正在尝试使用 aeson 来解析 api 返回的 json。使用 wreq 从 api 端点获取响应。在此字符串上运行任一解码时,我得到:

这可能是由于我没有正确理解文本编码,但在我看来,api 返回的字符串实际上不是有效的 json。如果是这样,我应该如何进行?无论哪种方式,我都会感谢有人指出我正确的方向!

我在下面包含了一个重现我的问题的示例。

0 投票
2 回答
1467 浏览

date - Haskell 日期解析

我正在尝试为 Data.Time.Calendar's Day 类型创建一个 FromJSON 实例。我对这些类型感到困惑,这似乎是一个应该解决的常见情况。

所以 Day 类型表示修改后的儒略日期。并且 Data.Time.Calendar 模块定义了“showGregorian”,它将修改后的儒略日期转换为公历日期并输出字符串 ISO 8601 表示。

问题是 Data.Time.Calendar 没有很好的方法将 ISO 8601 解析为公历日期。如果我使用 ParseTime 类,我只能传递字符串格式,而不是字符串代表日期的日历。因此,实际上,我将传入“20140502”,ParseTime 类将该字符串视为修改后的 Julian 日期的字符串表示形式。

看来这应该是一个已解决的问题。理想情况下,我想要一个不使用日期时间的解决方案。我的模型使用公历日期,因为这就是我所需要的,而这些就是我将要比较、搜索等的东西。

当然,当我只需要日历日时使用日历日的全部原因是这样我就不必考虑如何比较和转换它们,但我想那是另一天的抱怨。

附录:

天数定义为:

这让我相信一天不是物理的一天,而是 MJD 日历中的一天(根据公开的文档应该告诉我们类型代表什么,而不是类型的表示的原则)。

0 投票
1 回答
976 浏览

json - 使用 Pipes.Aeson 在 Haskell 中对 JSON 进行流式解析

Pipes.Aeson 库公开了以下函数:

如果我将此解析器与文件句柄一起使用 evalStateT 作为参数,则会从文件中读取单个 JSON 对象并进行解析。

问题是该文件包含多个对象(所有相同类型),我想在读取它们时折叠或缩小它们。

Pipes.Parse 提供:

但是正如你所看到的,这会返回一个新的解析器——我想不出一种方法来提供第一个解析器作为参数。

看起来 Parser 实际上是 StateT monad 转换器中的 Producer。我想知道是否有一种方法可以从 StateT 中提取 Producer,以便可以将 evalStateT 应用于 foldAll Parser,以及从 decode Parser 中提取 Producer。

不过,这可能是完全错误的方法。

简而言之,我的问题是:
使用 Pipes.Aeson 解析文件时,折叠文件中所有对象的最佳方法是什么?

0 投票
1 回答
104 浏览

haskell - 带有“免费”参考的 Aeson Prisms

只需阅读精彩的“ Lens/Aeson Traversals/Prisms”文章并拥有一个真实世界的应用程序。鉴于以下匿名 JSON 结构,我将如何提取集合而不是特定值?

我有:

我想要的是:

我错过了棱镜的全部意义吗?或者这是一个合法的用例?

干杯!

0 投票
2 回答
404 浏览

json - 将任意嵌套的 JSON 对象解析/导出到 Haskell 中的映射

我需要能够将一个巨大的嵌套 JSON 结构解析为更具延展性的东西,最好是从字符串到字符串的映射。

我正在谈论的结构类型的示例:

{“foo”:“baz”,“bar”:{“qux”:“quux”,“baz”:{“abracadabra”:“alakazam”,“abc”:“xyz”}}}

我想将以上内容解析为:

fromList [("foo", "baz"), ("bar/qux", "quux"), ("bar/baz/abracadabra", "alakazam"), ("bar/baz/abc", "xyz" )]

是否可以将其与 Aeson 的相对库存解析器一起使用?我是否应该对 Aeson 解析的 JSON AST 进行一些胡闹,直到它起作用?

0 投票
1 回答
755 浏览

json - 在 Haskell 中将元组数组转换为 JSON

有谁知道如何转换

类似于 JSON

使用(最好)Aeson?

0 投票
2 回答
563 浏览

haskell - aeson解码需要类型签名吗?

我正在编写一个小程序来解析来自 TCP 连接的 JSON,但我遇到了一个错误:

我不知道要添加什么签名instance FromJSON LogIn

代码是:

0 投票
2 回答
521 浏览

haskell - 在 fromJson 中插入默认时间戳

我有一个 ajax 调用将 json 发送到 Yesod 中的路由,我希望路由解析 json 并将其直接插入数据库。在我的模型文件中,我有

这会阻止解析 json,因为客户端没有发送创建时间。我尝试为日志条目编写自己的 parseJson,但由于 getCurrentTime 在 IO monad 中返回一个值,因此我无法插入 UTCTime 默认值。如果可能的话,我希望数据库设置该值。

此时我唯一能想到的就是创建一个像 LogEntryWithoutTime 这样的类型,将 JSON 解析为该类型并转换为 LogEntry。有没有更简单的方法?

编辑: 我展示了将 getCurrentTime 添加到 JSON 解析的三种不同失败。首先,目的是解析创建时间(如果可用),并且默认为服务器上的 getCurrentTime。无论如何这是不对的,因为我们不应该依赖客户的时间。

错误是

其次,我尝试获取当前时间。

我得到了错误

如果我将线路更改为

然后我得到

0 投票
1 回答
434 浏览

json - 具有错误处理功能的 Aeson 和 Lenses

我对镜头的魔力还很陌生,所以我遇到了一些麻烦。

参考:https ://www.fpcomplete.com/user/tel/lens-aeson-traversals-prisms

可以通过以下方式遍历 JSON 对象:

对于类似于以下内容的 JSON 对象:

Maybe monad 一直在使用,所以如果任何“访问器”失败,我会得到一个Nothing.

我也想传播失败,以便我知道哪个访问器失败了。

我能想到的唯一方法是传递一个访问器数组,按顺序应用它们,并在任何失败的地方返回一个错误。像这样的东西:

所以有了这个:

有没有更优雅的方式来做到这一点?为镜头制作一个 Either-ish monad,结果是什么withFailure