Ich verwende Data.Aeson, um einige JSON in einen Datensatztyp zu analysieren. Von Zeit zu Zeit werden Daten in den JSON hinzugefügt und das bricht meinen Code als Aeson etwas zum Effekt von klagt:Fehlertoleranter JSON-Parsing
erwartet Objekt mit 21 Namen/Wert-Paaren, aber bekam 23 Namen/Wert
Ich würde es wirklich vorziehen, den JSON fehlertolerant zu analysieren - es ist mir egal, ob dem JSON zu einem späteren Zeitpunkt weitere Felder hinzugefügt werden, parse einfach, was immer du kannst! Gibt es eine Möglichkeit, diese Fehlertoleranz zu erreichen? Hier ist mein Code:
myRecordFromJSONString :: BS.ByteString -> Maybe MyRecord
myRecordFromJSONString s = case Data.Attoparsec.parse json s of
Done _rest res -> Data.Aeson.Types.parseMaybe parseJSON res
_ -> Nothing
Ich sollte hinzufügen, dass ich deriveJSON von Data.Aeson.TH bin mit dem Parsing-Code zu generieren. Wenn ich den FromJSON-Code manuell schreibe, ist er fehlertolerant, aber ich möchte das nicht tun ...