Aeson を使用して、Yahoo の API からの json 引用データを解析しています。引用は次のようになります。
{
"date": "2010-03-10",
"Date": "2010-03-10",
"Open": "0.37",
"High": "0.37",
"Low": "0.34",
"Close": "0.35",
"Volume": "443000",
"Adj_Close": "0.35"
}
(このYQLクエリを使用しています)
ご覧のとおり、数字が引用されています。fromJSON
次のような実装を書くことができます:
instance FromJSON Quote where
parseJSON (Object o) =
Quote <$> o .: "Date"
<*> o .: "Open"
<*> o .: "High"
<*> o .: "Low"
<*> o .: "Close"
<*> o .: "Volume"
parseJSON _ = mzero
これは、導出されるものと同じです。残念ながら、これは、Open、High、Low などを Text タイプにしたい場合にのみ機能します。これらのフィールドのいずれかを Double として使用しようとすると、解析が失敗します。
私はこれを書くことができます:
<*> (fmap read $ o .: "Open")
好きなように取得しますがread
、これは部分関数である を使用します。部分関数を使用せずに上記の機能を取得するにはどうすればよいですか?