Aeson
HaskellでJSONを扱うLibrary
https://hackage.haskell.org/package/aeson-0.9.0.1/docs/Data-Aeson.html
https://hackage.haskell.org/package/aeson
ToJson型クラス ?
類似
winery
開発者は@fumieval
https://fumieval.hatenablog.com/entry/2019/09/07/115437
https://fumieval.hatenablog.com/entry/2019/03/21/172101
https://fumieval.hatenablog.com/entry/2018/06/03/195024
#WIP
命名の意味
(A note on naming: in Greek mythology, Aeson was the father of Jason.)
おしゃれかよmrsekut.icon
Interfaceがキレイでいいなーmrsekut.icon
https://qiita.com/alpha22jp/items/4cc65f128962e11811fb
わかりやすい
JSONとデータ型間の相互変換の方法は3種類
自前で変換する関数を定義する
最も柔軟だが、めんどい
その型を、FromJson型クラス、ToJson型クラスのinstanceにする
Generic型クラスを用いた自動導出
楽
Template Haskellを用いた自動導出
Value型
Jsonを表す型
Object | Array | String | Number | Bool | Nullのような雰囲気のやつ
FromJson型クラス
parseJSONの定義に.:を使ってApplicative Styleで書く
parseJSON :: Value -> Parser a
.:は、.を無視すると、jsのdestructuring assignmentのイメージっぽい
いやー、そうでもないかmrsekut.icon
ToJson型クラス
toJSONの定義に.=を使って書く
toJSON :: a -> Value
.=は、.を無視すればrecordの値を更新するときの=っぽく見えないこともないmrsekut.icon
あとは、decode, encode関数で相互に変換できる
確かに↓の例見れば、めちゃくちゃ自明なものをわざわざ自前で書いているのはわかりやすいmrsekut.icon
https://qiita.com/alpha22jp/items/4cc65f128962e11811fb#自前で変換する関数を定義する
lens-aeson
https://qiita.com/lotz/items/6305f8460db3419c22e3
https://hackage.haskell.org/package/lens-aeson
ほとんど何も書かなくていい
https://syocy.hatenablog.com/entry/2017/08/14/235830
hsのjsonについて