読者です 読者をやめる 読者になる 読者になる

アヤチノオト

覚書のこと

HaskellでJSON

インストール

HackageDB JSON

cabal update
cabal install json

使いかた

import Text.JSON

-- JSONから数値を取ってきて成功したら20倍する
main :: IO ()
main = print $ ok 0 (*20) getVal
       
jsonString :: String
jsonString = "[{\"hoge\": 2}]"

ok :: b -> (a -> b) -> Result a -> b
ok _ f (Ok a) = f a
ok b _ (Error _) = b

getVal :: Result Integer
getVal = decode jsonString >>= valFromObj "hoge" . head

encodeのやり方はまだよくわからんち。
あと、なんでResult aはEitherじゃだめだったんだろうか。めどい……

a -> Ok aな関数を書けば>>=が使える。