Análise JSON tolerante a falhas
Eu estou usando Data.Aeson para analisar alguns JSON em um tipo de registro. De tempos em tempos, os dados são adicionados ao JSON e isso quebra meu código, já que o Aeson reclama algo com o efeito de:
Objeto esperado com 21 pares de nome / valor, mas tem 23 nome / valor
Eu realmente prefiro analisar o JSON de uma maneira tolerante a falhas - eu não me importo se mais campos forem adicionados ao JSON em uma data posterior, apenas analise o que você puder! Existe uma maneira de alcançar essa tolerância a falhas? Aqui está meu código:
myRecordFromJSONString :: BS.ByteString -> Maybe MyRecord
myRecordFromJSONString s = case Data.Attoparsec.parse json s of
Done _rest res -> Data.Aeson.Types.parseMaybe parseJSON res
_ -> Nothing
Devo acrescentar que estou usando deriveJSON de Data.Aeson.TH para gerar o código de análise. Se eu escrever o código FromJSON manualmente, ele é tolerante a falhas, mas eu gostaria de não ter que fazer isso ...