JSONデータを処理しようとするときのhaskellの初心者の質問。
次の内容のkkという名前の単純なファイルがあります。
{
"id": 123,
"name": "Test1"
}
そして、次のコードで正常に読み取り、解析しています。
{-# LANGUAGE OverloadedStrings #-}
import Data.Aeson
import Data.Aeson.Types
import Control.Applicative ((<$>), (<*>))
import Control.Monad
import qualified Data.ByteString.Lazy.Char8 as BS
data Test = Test { id ∷ Integer
, name ∷ String
} deriving (Show)
process v = Test <$>
(v .: "id") <*>
(v .: "name")
instance FromJSON Test where
parseJSON (Object o) = process o
parseJSON (Array a) = mzero
parseJSON _ = mzero
main = do
src ← readFile "kk"
let t = decode (BS.pack src) ∷ Maybe Test
print t
ただし、ファイルが配列である場合、ファイルをどのように処理する必要があるかを判断できないようです。つまり、次のことを意味します。
[{
"id": 1,
"name": "Test1"
},
{
"id": 2,
"name": "Test2"
}]
配列のケースを折りたたんだり、反復したりするにはどうすればよいですか?