问题标签 [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 回答
333 浏览

haskell - 使用特定顺序将映射序列化为 YAML

我使用该yaml库来序列化类型Map String t(或某些类型 t)的值。结果输出中的顺序是相当随机的,这是次优的,因为文件应该是人类可读的。

有没有办法控制地图的序列化顺序?或者,可能更接近问题的核心,一个 aeson Object?如果没有,什么是合适的解决方法?

0 投票
1 回答
1800 浏览

json - Aeson:“当期待一个字符串时,却遇到了一个对象”

我对 Haskell 相当陌生,所以我的意思是缺少一些简单的东西。现在,我只是想从标准输入中读取一些 JSON 并取回 AST 作为概念证明。

我有这个 JSON 片段(JSONLint 说没问题):

当我使用该输入执行程序时,我得到:

当我测试一个空数组的文件时,它说它“遇到了数组”。

所以我猜我在这里错过了某种转换步骤,或者我从标准输入错误地读取。你怎么看?

0 投票
1 回答
190 浏览

haskell - 忽略/覆盖使用 TemplateHaskell 生成的实例

我正在将 Aeson 用于我正在做的一些客户端-服务器工作,将 ADT 编码为 Json。我Data.Aeson.TH用来生成toJSON我需要的实例,但是为 Map 类型生成的实例真的很难看而且很难处理。

我已经定义了我自己的更简单的编码,它只是将它们视为列表:

自然,当我在代码中使用它时,会出现Duplicate instance declarations错误。

有没有办法解决这个问题?我需要告诉 Template Haskell 不要为 Map 生成 ToJson 实例,或者我需要告诉 GHC 忽略该实例并使用我提供的实例。这些都可以吗?

请注意,这不是“重叠实例”问题。我想完全丢弃一个实例,而不是将它与另一个实例混合。

0 投票
1 回答
3645 浏览

haskell - 无法将预期类型“Data.ByteString.Lazy.Internal.ByteString”与实际类型“[Char]”匹配

我正在尝试在我的 Haskell 代码中启动并运行一个简单的 Json 解析器,我遇到了 Data.Aeson 这似乎是解决我的问题的可行解决方案

我按照页面上的示例代码进行了一些小的修改,这就是我得到的:

在 GHCi 中运行以下命令会导致标题中出现令人讨厌的消息:

那么,这里有人知道出了什么问题吗?我几乎完全按照编写的示例代码进行了操作,那么为什么它会失败?

0 投票
1 回答
650 浏览

json - 在 Haskell 中,如何解码可能是两种不同类型的 JSON 值?

我正在尝试解析一些书目数据,更具体地说,为每个项目提取“主题”字段。数据是 json,看起来像这样:

如果每个条目都是文本或 [文本],我可以提取“主题”,但我不知道如何同时容纳两者。这是我当前状态的程序:

任何帮助,将不胜感激。

编辑:

工作的 FromJSON Row 实例:

0 投票
2 回答
4619 浏览

json - 使用 Aeson 在 Haskell 中解析嵌套 JSON

我正在尝试从 RESTful API 解析 JSON。返回的 JSON 是高度嵌套的,可能/可能不包含某些字段。以下是一些返回数据的示例:

如您所见,JSON 模式以 a 开头,resultSet其中包含 a locationarrivalqueryTime。反过来location,包含位置列表,arrival包含到达列表,并且queryTime只是 UTC 时间。然后, anarrival可以包含 a blockPosition,其中可以包含 atrip等。很多嵌套。很多可选字段。

为了掌握这一切,我创建了一组新的数据类型。数据类型嵌套类似。对于每种数据类型,我都有一个 FromJSON 实例(来自 Aeson 库)。

现在,问题是:检索数据很容易。我可以通过

但是当我尝试获取 ResultSet 数据时,它以Nothing.

但是,如果我删除嵌套数据并简单地尝试获取该queryString字段(通过从 FromJSON 的数据类型和实例中删除字段,它会成功并返回 queryString 字段。

我究竟做错了什么?这是在 Haskell 中解析 JSON 的最简单方法吗?我是这个(学生)的菜鸟,所以请温柔。

0 投票
1 回答
1544 浏览

haskell - 如何使用 Warp 和 Aeson 通过 HTTP 传递 JSON

我想创建一个在 Haskell 上运行的高性能基于 HTTP 的 API,使用warp作为 HTTP 后端。

服务器应根据请求返回 JSON 数据。此数据应使用Aeson序列化

然而,warp需要一个响应对象,而 Aeson 返回lazy ByteStrings。

如何将两个库绑定在一起?对于这个问题的范围,我对查询解析或路由不感兴趣,但在一个示例中,如何将两个库绑定在一起以提供具有正确标头的正确 JSON。

注意:这个问题故意不显示任何研究工作,因为它是以问答方式回答的。如果您需要研究工作,请参阅我的答案。

0 投票
1 回答
507 浏览

json - 您如何使用 Aeson 解析 Bitly 响应 JSON?

我一直在努力尝试使用 Aeson 来解析 Bitly 的响应。有人可以给我一个关于应该定义哪些 Haskell 类型以及如何使用 Aeson 将以下内容解析为这些类型的提示吗?:

这是我到目前为止所尝试的:

当我输入时(为便于阅读而手工编辑):

我回来了(也手工编辑):

在代码中,查找-- LOST RIGHT HERE. 我不知道如何解析"expand".

很高兴看到如何取得进展。也许我走错了路,有人可以让我直截了当(例如,我到目前为止定义的数据类型可能是关闭的)。

0 投票
2 回答
519 浏览

json - 使用 aeson 解析带有“随机”整数键的嵌套 JSON

我正在使用aeson库来为我的自定义Graph类型生成和解析 json 文件。以下是类型定义。

实际上,我正在使用欧拉图和半欧拉图,它们的所有顶点在二维空间中都有位置。简而言之,Graph 使用 Data.Graph,但这与我的问题无关。每个图表都有自己的 ID,以便在许多其他图表中快速识别它。

这是 json 文件的示例,其中包含有关我的图表的信息:

所以,这是我的toJSON功能实现:

但我实际上在从 json-file 解析回来时遇到了问题。主要问题是这样一个事实,我们不知道有多少顶点有特定的 Graph,所以它不能被硬编码。这是我第一次尝试编写parseJSON函数:

实际上我认为我可以开始计数1并获取顶点,而程序仍然会解析每个 next i。但这不是一个好的选择,因为 minimumvertex id并不总是如此1,有时 nextvertex id与 current 的差异更大1。甚至可以解析这些数据吗?无论如何,即使是这个问题的最简单情况(当vertex ids从开始1并使用 递增时(+1))我也坚持了下来。

好吧。这就是我如何获得最大和最小顶点ID:

所有签名都不是通用的,但这只是示例。

明天我将再次尝试解决这个简单的问题案例。无论如何,主要问题仍然需要一个答案:)

0 投票
1 回答
1278 浏览

haskell - Aeson解析动态对象

我需要解析没有严格结构的 json API 响应:

怎么可能写出parseResponse哪些可以解析(或为其选择解析器)以供以后使用?

我的最后一次尝试如下。我不喜欢它,因为它不允许像 Aeson 那样选择响应类型decode