我正在編寫一個使用Github Webhooks API的應用程序。 在掛機消息我得到這個JSON結構:http://organicorange.ro:8000/set我怎樣才能讀取嵌套的JSON數組使用AESON
我做的類型聲明是這樣的:
newtype CommitList = CommitList {commitList :: [Commit]}
instance FromJSON CommitList where
parseJSON (Object o) = CommitList <$> o .: "commits"
parseJSON _ = mzero
data Commit = Commit {ids :: String, message :: String, url :: String, modified :: [String], author :: Auth} deriving (Show)
instance FromJSON Commit where
parseJSON (Object o) = Commit <$> o .: "id" <*> o .: "message" <*> o .: "url" <*> o .: "modified" <*> o .: "author"
parseJSON _ = mzero
data Auth = Auth {name :: String, email :: String, username :: String} deriving (Show)
instance FromJSON Auth where
parseJSON (Object o) = Auth <$> o .: "name" <*> o .: "email" <*> o .: "username"
parseJSON _ = mzero
如何可以解析了「修改」數組返回一個列表?
你的執行不起作用嗎?我沒有在GHCi測試中包含'Auth'部分,但已經有'FromJSON a => FromJSON [a]'的實例。 – bheklilr 2014-08-29 14:39:03
是的,我複製/粘貼你的代碼,並使用提供的示例JSON,它解析得很好。你的問題到底是什麼? – bheklilr 2014-08-29 14:48:12
感謝您的時間。在這個配置中,當我嘗試從JSON解析「modified」數組時,我得到[String]就像我定義的那樣:'[[「src/FullBG/index.html」,「src/Main.hs」,「src/app .json「]]',我需要的是像'[」src/FullBG/index.html「,」src/Main.hs「,」src/app.json「]這樣的組件的列表。 – 2014-08-29 19:50:17