Fehlertolerantes JSON-Parsen
Ich verwende Data.Aeson, um einige JSON-Dateien in einen Datensatztyp zu zerlegen. Von Zeit zu Zeit werden Daten zum JSON hinzugefügt und dies zerstört meinen Code, da sich Aeson über Folgendes beschwert:
Erwartetes Objekt mit 21 Name / Wert-Paaren, aber 23 Name / Wert
Ich würde es wirklich vorziehen, den JSON-Code fehlertolerant zu analysieren. Es ist mir egal, ob zu einem späteren Zeitpunkt weitere Felder zum JSON-Code hinzugefügt werden. Analysieren Sie einfach, was immer Sie können! 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 verwende, um den Parsing-Code zu generieren. Wenn ich den FromJSON-Code manuell schreibe, ist er fehlertolerant, aber das möchte ich nicht tun müssen ...