问题标签 [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 投票
1 回答
176 浏览

json - Haskell:为什么在 JSON 解析示例中加载 pi-forall?

我正在尝试通过https://www.fpcomplete.com/school/pick-of-the-week/episode-1-json在 Haskell 中学习解析 JSON

当我加载文件(显示在此交互式列表之后)时,我得到:

为什么它会加载pi-forall?那是来自 OPLSS 2013 的 Stephanie Weirich 的演示 impl。我如何追踪加载此内容的人员/内容/原因?

这是 X03ObjSetsTweetSetTest.hs:

0 投票
0 回答
167 浏览

haskell - Haskell Yesod 启动项目报错

安装 Yesod Web 框架。初始化项目,然后启动它。得到一个错误:

但是已经安装了 aeson-0.6.2 包:

如何解决这个问题?

0 投票
1 回答
229 浏览

haskell - 覆盖实例行为

Yesod 包含Entity数据类型,即具有来自数据库的 id 的模型。Yesod 还创建Entity了 AesonToJSON类的实例,因此可以轻松地将其序列化为 json。更棒的是,Entity它可以被包裹在任何结构中,并且它也会被序列化。ToJSON支持协议的类型很多。它非常方便,我非常喜欢它。

不幸的是,Yesod 提供的序列化格式Entity不符合我的需求,我正在寻找一种简单而透明的方式来改变它。

这是一个例子。我有简单的模型

相应的实体将是

现在,从数据库中获取实体并将其返回为 json 的代码看起来像

序列化列表看起来像

我希望它是

我可以看到几个关于如何更改它的选项,每个选项都有其缺点:

  1. 根据我的格式做一个序列化的函数Entity,但是之后就无法序列化Listies了Entity。我将结束编写多个函数以Entity在它恰好属于的任何结构中进行序列化。

  2. 为 an 创建一个新类型Entity,但是我应该在序列化之前将所有Entityies 转换为ies。MyNewEntity这对我来说似乎很难看,它会导致不必要的转换噪音。

总而言之,我的问题是我无法更改Entity ToJSON实现,也无法让 Yesod 返回不同于Entity. 我被迫进行转换,但最透明的方法是什么?

0 投票
1 回答
471 浏览

json - 如何避免为 Data.Tree 创建孤立的 FromJSON 实例

我正在使用该aeson软件包。我有一个Data.Tree在其声明中使用的数据类型。像下面这样,只是更复杂:

我想用来为这种类型Data.Aeson.TH生成一个FromJSON实例。

但是Data.Tree没有标准实例FromJSON,这意味着我需要声明一个孤儿实例。

有什么方法可以避免创建该孤儿实例,同时仍然可以使用deriveJSON

0 投票
1 回答
475 浏览

haskell - 为什么 (Map String v) 的现有 FromJSON 实例未在 (Map String String) 上使用?

对于这个使用 Aeson 的示例程序:

我收到一个错误,抱怨缺少实例:

我知道我需要一个 FromJSON 实例来解析 JSON,并且 Aeson 中还包含很多常用的实例。根据文档,有一个实例FromJSON v => FromJSON (Map String v),我认为应该在这种情况下使用它。

我错过了什么?

0 投票
1 回答
2025 浏览

haskell - parsing utctime with aeson

I can't get aeson to parse an UTCTime value. I tried to encode one and feed it back, but that didn't work:

The FromJSON instance of the UTCTime type is the following (ref):

following the format description found here, everything should be ok. What am I missing?

0 投票
1 回答
371 浏览

json - Why Aeson encodes () as empty array?

I am surprised to know that Aeson encodes () as empty array. What is reason behind such behaviour? I think null would be more natural, am I wrong?

0 投票
1 回答
1362 浏览

exception - 带有aeson / attoparsec的管道,一旦源没有更多数据,如何干净地退出

我正在使用aeson/attoparsecconduit/ conduit-httpconnected byconduit-attoparsec来解析来自文件 / 网络服务器的 JSON 数据。我的问题是我的管道总是抛出这个异常......

...一旦套接字关闭或我们点击 EOF。通过管道等解析和传递生成的数据结构工作得很好,但它总是以sinkParser抛出这个异常结束。我这样调用它...

...在我的管道内部,将 ByteStrings 解析为我的消息结构。

一旦没有更多数据(没有更多顶级表达式),我怎样才能让它干净地退出管道?是否有任何体面的方法来检测/区分此异常而无需查看错误字符串?

谢谢!

编辑:示例:

示例输入(input.json):

输出:

和 out.txt:

0 投票
1 回答
834 浏览

json - 使用 Aeson (Haskell) 解码枚举选择

我在弄清楚如何为定义其他两种类型之间选择的 Enum 类型定义 FromJSON 实例时遇到了一些麻烦。我的预感是我对 、<*> 和 (.:) 运算符以及 Aeson Object 类型的工作原理没有充分的了解,但我无法解析编译器错误然而。(谢天谢地,ToJSON 实例很简单。)

给定两个子数据类型,我可以像这样定义实例:

这工作正常,但我一直无法为 FromJSON 定义一个实例ExampleChoice

我曾想过尝试将其定义为 msum,如下所示:

但是,我还没有弄清楚那个解析。

我还没有尝试使用 TemplateHaskell 和 derivedJSON 为我定义这个,但即使这不会导致问题,我很好奇如何解决这个问题。

编辑:deriveJSON 效果很好。不过,我仍然很好奇如何手动构建它。

0 投票
2 回答
1308 浏览

json - Data.Aeson 编码可选键

我有以下问题,我有一个带有可选键的 JSON 格式,我需要从我的 haskell 代码中生成这些键。

让我们举个例子

现在,如果我尝试对没有鞋码的人进行编码,我仍然会将键“shoeSize”设置为 null,Aeson 使键在编码中可选的方法是什么

编辑,编码示例

应该导致