如何使用Aeson解析整数

罗素·斯图尔特

我正在使用强烈推荐的Aeson软件包,但是我需要解析整数。我想做类似的事情:

decode "5" :: Maybe Int

并获取结果,但是正如文档所解释的那样(http://hackage.haskell.org/package/aeson-0.8.0.0/docs/Data-Aeson.html),Aeson不支持解析简单类型(精妙的主意!) :

>>> decode (encode (1 :: Int)) :: Maybe Int
Nothing

参考您使用值解析器而不是json解析器,但是没有指示如何实际使用该解析器。如果您查看解码源,您会发现Aeson在内部具有带解析器的encodeWith选项,但对您而言是隐藏的。似乎可以导入Data.Attoparsec并运行它parse value "5",但是我也很难从中获得有意义的结果。

比克利尔

这将不起作用,因为JSON不支持1作为有效的JSON文档,有效的JSON唯一的顶级值是对象和数组。您可以通过在值周围放置方括号并将其解码为Ints列表来轻松解决此问题

> decode "[1]" :: Maybe [Int]
Just [1]

decode函数仅将JSON文档转换为Haskell值,而不仅仅是将JSON值转换为Haskell值。您可以在以下文档中看到此内容json

解析顶级JSON值。根据RFC 4627,它必须是对象或数组。

但是,要value使用Data.Attoparsec来实际使用解析器Data.Aeson.Parser

> parseOnly value "1"
Right (Number 1.0)

通过简单的模式匹配,您可以将该值提取为一个Data.Scientific.Scientific值,Aeson将其用作数字类型。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用Aeson解析整数

来自分类Dev

如何使用Aeson追溯解析错误?[+答案]

来自分类Dev

如何使用Haskell Aeson解析数组

来自分类Dev

如何使用Aeson解析Bitly Response JSON?

来自分类Dev

如何使用Aeson解析此JSON?

来自分类Dev

如何使用 aeson 将数组解析为元组?

来自分类Dev

使用 Aeson 解析嵌入的 JSON

来自分类Dev

如何使用Parsec解析整数

来自分类Dev

如何使用Parsec解析整数

来自分类Dev

如何检查解析后的Aeson价值?

来自分类Dev

使用 Haskell Aeson 解析 Json 玫瑰树

来自分类Dev

如何在不声明单个类型的情况下使用Aeson解析JSON

来自分类Dev

如何在使用Data.Aeson进行JSON解析时正确出错

来自分类Dev

如何使用Aeson的解析器从非常简单的Object中获取键值

来自分类Dev

如何在Haskell / Aeson中使用类型函数解析多态值?

来自分类Dev

使用Aeson解析JSON文档时解析引用

来自分类Dev

Aeson使用先前解析的默认值解析JSON

来自分类Dev

使用Aeson解析JSON文档时解析引用

来自分类Dev

使用STL解析整数

来自分类Dev

扩展Aeson示例,如何使用值数组?

来自分类Dev

使用Pipes.Aeson在Haskell中进行JSON的流解析

来自分类Dev

使用aeson解析JSON以获取复合数据类型

来自分类Dev

使用aeson解析JSON以获取复合数据类型

来自分类Dev

使用Aeson从Haskell中的URL解析JSON数据

来自分类Dev

在 Haskell 中使用 Aeson 解析 JSON 配置文件

来自分类Dev

如何使用Jackson将JSON对象键解析为整数?

来自分类Dev

如何使用Jackson将JSON对象键解析为整数?

来自分类Dev

用aeson解析utctime

来自分类Dev

AESON:解析动态结构