Chr*_*lij 7 parsing json haskell
我正在研究简单的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)
Run Code Online (Sandbox Code Playgroud)
注意:我Data.Aeson在示例中使用的似乎是推荐的,但是我更愿意使用另一个库.
此外,可以更改任何和所有此代码.如果得到了
ham*_*mar 10
Data.Aeson设计用于Attoparsec,所以它只给你一个Parser你必须使用Attoparsec.此外,Attoparsec更喜欢继续工作ByteString,因此您必须稍微改变请求的方式以获得ByteString结果而不是a 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))
Run Code Online (Sandbox Code Playgroud)
在这里,我刚刚将JSON解析为普通的Value,但您可能希望创建自己的数据类型并FromJSON为其编写实例以便整齐地处理转换.
| 归档时间: |
|
| 查看次数: |
2719 次 |
| 最近记录: |