Отказоустойчивый анализ JSON

Я использую Data.Aeson для анализа некоторого JSON в тип записи. Время от времени данные добавляются в JSON, и это ломает мой код, так как Aeson жалуется на что-то вроде:

expected Object with 21 name/value pairs but got 23 name/value

Я действительно предпочел бы анализировать JSON отказоустойчивым способом. --Меня не волнует, будут ли добавлены дополнительные поля в JSON позже, просто анализируйте все, что можете! Есть ли способ добиться этой отказоустойчивости? Вот мой код:

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

Я должен добавить, что я использую производный JSON из Data.Aeson.TH для генерации кода синтаксического анализа. Если я напишу код FromJSON вручную, он будет отказоустойчивым, но мне бы не хотелось этого делать...

11
задан hackerhasid 15 May 2012 в 20:49
поделиться