问题标签 [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.
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:
haskell - Haskell Yesod 启动项目报错
安装 Yesod Web 框架。初始化项目,然后启动它。得到一个错误:
但是已经安装了 aeson-0.6.2 包:
如何解决这个问题?
haskell - 覆盖实例行为
Yesod 包含Entity
数据类型,即具有来自数据库的 id 的模型。Yesod 还创建Entity
了 AesonToJSON
类的实例,因此可以轻松地将其序列化为 json。更棒的是,Entity
它可以被包裹在任何结构中,并且它也会被序列化。ToJSON
支持协议的类型很多。它非常方便,我非常喜欢它。
不幸的是,Yesod 提供的序列化格式Entity
不符合我的需求,我正在寻找一种简单而透明的方式来改变它。
这是一个例子。我有简单的模型
相应的实体将是
现在,从数据库中获取实体并将其返回为 json 的代码看起来像
序列化列表看起来像
我希望它是
我可以看到几个关于如何更改它的选项,每个选项都有其缺点:
根据我的格式做一个序列化的函数
Entity
,但是之后就无法序列化List
ies了Entity
。我将结束编写多个函数以Entity
在它恰好属于的任何结构中进行序列化。为 an 创建一个新类型
Entity
,但是我应该在序列化之前将所有Entity
ies 转换为ies。MyNewEntity
这对我来说似乎很难看,它会导致不必要的转换噪音。
总而言之,我的问题是我无法更改Entity
ToJSON
实现,也无法让 Yesod 返回不同于Entity
. 我被迫进行转换,但最透明的方法是什么?
json - 如何避免为 Data.Tree 创建孤立的 FromJSON 实例
我正在使用该aeson
软件包。我有一个Data.Tree
在其声明中使用的数据类型。像下面这样,只是更复杂:
我想用来为这种类型Data.Aeson.TH
生成一个FromJSON
实例。
但是Data.Tree
没有标准实例FromJSON
,这意味着我需要声明一个孤儿实例。
有什么方法可以避免创建该孤儿实例,同时仍然可以使用deriveJSON
?
haskell - 为什么 (Map String v) 的现有 FromJSON 实例未在 (Map String String) 上使用?
对于这个使用 Aeson 的示例程序:
我收到一个错误,抱怨缺少实例:
我知道我需要一个 FromJSON 实例来解析 JSON,并且 Aeson 中还包含很多常用的实例。根据文档,有一个实例FromJSON v => FromJSON (Map String v)
,我认为应该在这种情况下使用它。
我错过了什么?
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?
exception - 带有aeson / attoparsec的管道,一旦源没有更多数据,如何干净地退出
我正在使用aeson
/attoparsec
和conduit
/ conduit-http
connected byconduit-attoparsec
来解析来自文件 / 网络服务器的 JSON 数据。我的问题是我的管道总是抛出这个异常......
...一旦套接字关闭或我们点击 EOF。通过管道等解析和传递生成的数据结构工作得很好,但它总是以sinkParser
抛出这个异常结束。我这样调用它...
...在我的管道内部,将 ByteStrings 解析为我的消息结构。
一旦没有更多数据(没有更多顶级表达式),我怎样才能让它干净地退出管道?是否有任何体面的方法来检测/区分此异常而无需查看错误字符串?
谢谢!
编辑:示例:
示例输入(input.json):
输出:
和 out.txt:
json - 使用 Aeson (Haskell) 解码枚举选择
我在弄清楚如何为定义其他两种类型之间选择的 Enum 类型定义 FromJSON 实例时遇到了一些麻烦。我的预感是我对 、<*> 和 (.:) 运算符以及 Aeson Object 类型的工作原理没有充分的了解,但我无法解析编译器错误然而。(谢天谢地,ToJSON 实例很简单。)
给定两个子数据类型,我可以像这样定义实例:
这工作正常,但我一直无法为 FromJSON 定义一个实例ExampleChoice
:
我曾想过尝试将其定义为 msum,如下所示:
但是,我还没有弄清楚那个解析。
我还没有尝试使用 TemplateHaskell 和 derivedJSON 为我定义这个,但即使这不会导致问题,我很好奇如何解决这个问题。
编辑:deriveJSON 效果很好。不过,我仍然很好奇如何手动构建它。
json - Data.Aeson 编码可选键
我有以下问题,我有一个带有可选键的 JSON 格式,我需要从我的 haskell 代码中生成这些键。
让我们举个例子
现在,如果我尝试对没有鞋码的人进行编码,我仍然会将键“shoeSize”设置为 null,Aeson 使键在编码中可选的方法是什么
编辑,编码示例
应该导致