Я использую Data.Aseon для разбора некоторого JSON в тип записи. Время от времени данные добавляются в JSON, и это прерывает мой код, поскольку Aeson жалуется на эффект:
ожидаемый объект с 21 имя/значение, но получили 23 имени/значения
Я бы предпочел разобрать 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
Я должен добавить, что я использую deriveJSON из Data.Aeson.TH для генерации кода синтаксического анализа. Если я напишу код FromJSON вручную, он будет терпимым к ошибкам, но я бы не хотел этого делать...