Parsowanie JSON odporne na błędy

Używam Data.Aeson do analizy niektórych JSON w typ rekordu. Od czasu do czasu dane są dodawane do JSON i to łamie mój kod, ponieważ Aeson narzeka na coś w wyniku:

oczekiwany Obiekt z 21 parami nazwa / wartość, ale otrzymał 23 nazwę / wartość

Naprawdę wolałbym analizować JSON w sposób odporny na błędy - nie obchodzi mnie, czy więcej pól zostanie dodanych do JSON w późniejszym terminie, po prostu przeanalizuj wszystko, co możesz! Czy istnieje sposób na osiągnięcie tej odporności na błędy? Oto mój kod:

myRecordFromJSONString :: BS.ByteString -> Maybe MyRecord
myRecordFromJSONString s = case Data.Attoparsec.parse json s of
  Done _rest res -> Data.Aeson.Types.parseMaybe parseJSON res
  _              -> Nothing

Powinienem dodać, że używam deriveJSON z Data.Aeson.TH, aby wygenerować kod parsowania. Jeśli piszę kod FromJSON ręcznie, jest on odporny na błędy, ale nie chcę tego robić ...

questionAnswers(1)

yourAnswerToTheQuestion