3
我想解析JSON以產生具有多個構造函數的類型。挑戰在於該類型是以包含所需數據的密鑰的名稱進行編碼的。理論上,我可以使用一堆.:?
調用,然後檢查給定的密鑰是否返回Just
,但我認爲必須有更好的方法。我看着asum
,但這對我沒有多大幫助(可能是因爲我不熟悉它)。艾森解析爲多個構造函數
import Data.Aeson
import Data.Time.Clock
data Request = Req1 { id :: String, properties :: Value }
| Req2 { id :: String, properties :: Value }
| Req3 { id :: String, time :: UTCTime }
instance FromJSON Request where
parseJSON = withObject "message" $ \o ->
-- ???
實施例的請求:
{"req1": {"id": "345", "p1": "v1", "p2": "v2"}}
{"req2": {"id": "654", "p3", "v3"}}
{"req3": {"id": "876", "time": 1234567890}}
你不能爲每個不同的請求對象使用不同的類型嗎? – jkeuhlen
另請參閱http://stackoverflow.com/questions/32421836/aeson-parsing-dynamic-keys-as-type-field?rq=1 –