gpt4 book ai didi

json - 在 Haskell 中解析 JSON 字符串

转载 作者:行者123 更新时间:2023-12-02 05:51:15 25 4
gpt4 key购买 nike

我正在开发一个简单的 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 解析为普通的 Value,但您可能希望创建自己的数据类型并为其编写一个 FromJSON 实例巧妙地处理转换。

关于json - 在 Haskell 中解析 JSON 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6960820/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com