10
私は次のJSONをaesonで解析しようとしています。フィールド名が予約済みのキーワードを含むJSONを解析します。
{
"data": [
{
"id": "34",
"type": "link",
"story": "foo"
},
{
"id": "35",
"type": "link",
"story": "bar"
}
]
}
私は無視したいフィールドがたくさんあるので、それはI should use GHC genericsようです。しかし、data
とtype
のようなHaskellキーワードを使用するデータ型定義を書くにはどうすればいいですか?もちろん、次のようになります:parse error on input `data'
data Feed = Feed {data :: [Post]}
deriving (Show, Generic)
data Post = Post {
id :: String,
type :: String,
story :: String
}
deriving (Show, Generic)
ありがとうございます。このアプローチを 'Generic'と組み合わせることも可能でしょうか? 「Post」型は 'type'属性を持たなかったので、' Feed'の 'parseJSON'を手動で実装している間に' Post derived(Generic) 'を持つことはできないと思われます。 。 – mb21
最後に、私はJSONの 'data'属性を取り除くためだけに' Feed'データ型が本当に必要かどうか、何とか投稿に直接アクセスできるのかどうか疑問に思っていました。 – mb21
@ mb21 [a]はFromJSON/ToJSONインスタンスを持っていますので、Postのリストを直列化するだけの場合は、 'encode listOfPosts'で直接行います。また、このアプローチをGenericと組み合わせて、Genericを使用して他のインスタンスと同様にPostのインスタンスを派生させ、Feedのインスタンスを手動で記述することができます。それだけで動作します。 – bennofs