在Haskell中解析JSON字符串

前端之家收集整理的这篇文章主要介绍了在Haskell中解析JSON字符串前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在研究简单的 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实例以便整齐地处理转换.

猜你在找的JavaScript相关文章