我正在研究简单的 Haskell程序,该程序从服务器获取 JSON字符串,解析它,并对数据执行某些操作.目前的细节并不是真正相关,我遇到的麻烦是解析返回的JSON.

我从服务器返回JSON字符串作为IO String类型,似乎无法弄清楚如何将其解析为JSON对象.

任何帮助将非常感激 :)

到目前为止,这是我的代码.

import Data.Aeson
import Network.HTTP

main = do
    src <- openURL "http://www.reddit.com/user/chrissalij/about.json"
    -- Json parsing code goes here

openURL url = getResponseBody =<< simpleHTTP (getRequest url)

注意:我在示例中使用的是Data.Aeson,因为这似乎是推荐的,但是我更愿意使用另一个库.

此外,可以更改任何和所有此代码.如果得到了

解决方法

Data.Aeson旨在与Attoparsec一起使用,因此它只为您提供一个Parser,然后您必须使用Attoparsec.此外,Attoparsec更喜欢使用ByteString,因此您必须稍微改变请求的方式以获取ByteString结果而不是String.

这似乎有效:

import Data.Aeson
import Data.Attoparsec
import Data.ByteString
import Data.Maybe
import Network.HTTP
import Network.URI

main = do
    src <- openURL "http://www.reddit.com/user/chrissalij/about.json"
    print $parse json src

openURL :: String -> IO ByteString
openURL url = getResponseBody =<< simpleHTTP (mkRequest GET (fromJust $parseURI url))

在这里,我刚刚将JSON解析为普通值,但您可能希望创建自己的数据类型并为其编写FromJSON实例以便整齐地处理转换.

在Haskell中解析JSON字符串的更多相关文章

  1. windows – 在Haskell程序中使用所有可用的RAM?

    我有8GB的RAM,但Haskell程序似乎只能使用1.3GB.我正在使用这个简单的程序来确定GHC程序可以分配多少内存:这是我发现的:>运行./mem.exe40000000RTS-s成功并报告正在使用的总内存为1113MB>运行./mem.exe42000000RTS-s因内存不足错误而失败>运行./mem.exe42000000RTS-s-M4G错误输出-M4G:大小超出允许范围>运行./m

  2. windows – Haskell,GHC,win32,cairo

    我怀疑你遇到了很多我刚刚做过的问题.我最近在Haskell和ZeroMQ在Windows上做了一些事情.GHC在Windows上运行,ZeroMQ有一个MingW32端口,并且有一个标准的ZeroMQCabal包,所以我认为这将工作.然而:>GHC仅部分支持Windows上的动态链接.见here.>ZeroMQCabal软件包取决于libzmq的静态版本.>GHC在Windows上使用MingW32约定其库和dll.>ZeroMQ只在他们的MingW32端口中构建一个动态的.dll,而不是.a静态存档.我

  3. 如何从Windows XP机器清除Haskell安装?

    我尝试卸载Haskell平台,但包数据库保持不变.如何从系统中彻底清除Haskell?

  4. Windows – Haskell – GHC中的问题编译

    我对Haskell很新,而且我最近安装了GHC平台.我决定通过编译一个简单的HelloWorld程序来测试它:main=putStrLn“Hello,world”现在,当我进入命令行,找到正确的目录,并输入ghchello.hs,它回来时显示以下消息:“[1of1]编译Main“.我知道一旦编译完成,它应该遵循“链接hello.exe…”,但是从来没有,没有.exe生成.基本上是否有什么可以理解的原因呢?代码是否有问题,有什么我不知道的,还是应该尝试重新安装Haskell平台?谢谢.我有ghc通过从文件的

  5. 在Windows上安装Haskell,cabal配置

    我该怎么办,粘贴文件开头的第3步,文件末尾的行,覆盖现有的行或完全跳过第3步?您不需要覆盖现有行.您可以拥有多个额外的prog-path条目,它们都可以使用.

  6. 正则表达式 – Haskell:正则表达式和Data.Text

    当处理大量的文本数据时,建议使用Data.Text而不是使用haskells本机字符串.检查,完成.但正则表达式呢?是否有可用的正则表达式库,专门用于Data.Text?

  7. 模式匹配Haskell中的正则表达式模式

    在Scala中,我有一个正则表达式模式匹配,如下所示:结果是:如何在Haskell中完成类似的结果?换句话说,我可以匹配包含组的正则表达式并将组分配给标识符吗?

  8. haskell – 非正则递归类型的变形(折叠)的类型是什么?

    许多变形似乎很简单,主要是用一个定制功能代替每个数据构造函数,例如。然而,对我来说不清楚的是,如果使用相同的类型构造函数,但是使用不同的类型参数会发生什么。我会学习在Coq中成为:具有感应原理:删除“依赖”部分:在Haskell符号:除了附加的List3(a,a)参数外,这是一种折叠。唉,Coq不接受这种类型因为内部的List4的出现不是在严格正确的位置。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  9. 替换/替换与Haskell正则表达库

    有没有一个高级API用于在Haskell中进行搜索和替换与正则表达式?特别是,我正在看Text.Regex.TDFA或Text.Regex.Posix包。我真的喜欢类似的东西:所以,例如,用“猫”代替“狗”,你可以写或者与monad进行更多高级的事情,比如计数事件等。Haskell的这个文档是相当缺乏的。一些低级API注释是here。Text.Regex包中的subRegex怎么样?

  10. 正则表达式 – PCRE在Haskell – 什么,在哪里,如何?

    我一直在寻找有关Haskell正则表达式的一些文档或教程.没有关于HaskellWikipage的有用信息.它只是给出了一个隐秘的消息:有一个简短的blogpost我发现相当有帮助,但它只处理Posix正则表达式,而不是PCRE.我一直在使用Posix正则表达式几个星期,我得出结论,对于我的任务,我需要PCRE.我的问题是,我不知道从Haskell开始使用PCRE.我已经下载了正则表达式的pcre-builtin与cabal,但我需要一个简单的匹配程序的例子,以帮助我走.>是否可以实现多行匹配?>我可以使

随机推荐

  1. js中‘!.’是什么意思

  2. Vue如何指定不编译的文件夹和favicon.ico

    这篇文章主要介绍了Vue如何指定不编译的文件夹和favicon.ico,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  3. 基于JavaScript编写一个图片转PDF转换器

    本文为大家介绍了一个简单的 JavaScript 项目,可以将图片转换为 PDF 文件。你可以从本地选择任何一张图片,只需点击一下即可将其转换为 PDF 文件,感兴趣的可以动手尝试一下

  4. jquery点赞功能实现代码 点个赞吧!

    点赞功能很多地方都会出现,如何实现爱心点赞功能,这篇文章主要为大家详细介绍了jquery点赞功能实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  5. AngularJs上传前预览图片的实例代码

    使用AngularJs进行开发,在项目中,经常会遇到上传图片后,需在一旁预览图片内容,怎么实现这样的功能呢?今天小编给大家分享AugularJs上传前预览图片的实现代码,需要的朋友参考下吧

  6. JavaScript面向对象编程入门教程

    这篇文章主要介绍了JavaScript面向对象编程的相关概念,例如类、对象、属性、方法等面向对象的术语,并以实例讲解各种术语的使用,非常好的一篇面向对象入门教程,其它语言也可以参考哦

  7. jQuery中的通配符选择器使用总结

    通配符在控制input标签时相当好用,这里简单进行了jQuery中的通配符选择器使用总结,需要的朋友可以参考下

  8. javascript 动态调整图片尺寸实现代码

    在自己的网站上更新文章时一个比较常见的问题是:文章插图太宽,使整个网页都变形了。如果对每个插图都先进行缩放再插入的话,太麻烦了。

  9. jquery ajaxfileupload异步上传插件

    这篇文章主要为大家详细介绍了jquery ajaxfileupload异步上传插件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  10. React学习之受控组件与数据共享实例分析

    这篇文章主要介绍了React学习之受控组件与数据共享,结合实例形式分析了React受控组件与组件间数据共享相关原理与使用技巧,需要的朋友可以参考下

返回
顶部