Verifique se a chave existe e itere a matriz JSON usando Python
Eu tenho um monte de dados JSON de postagens no Facebook como o abaixo:
Os dados JSON são semiestruturados e nem todos são iguais. Abaixo está o meu código:
Eu quero que o código imprima o to_id como 1543 else print 'null'
Não sei ao certo como fazer isso.
— pravi
Por que essas inverificações explícitas e raisese elas estão ausentes? Basta acessá-lo sem verificar e você obterá exatamente o mesmo comportamento (exceto com um em KeyErrorvez de a ValueError).
— 22714 abarnert #
Se tudo o que você deseja é verificar se a chave existe ou não
Se você deseja verificar se existe um valor para a chave
Retorne um valor padrão se o valor real estiver ausente
— por acaso
retornará 'null' e não 'Default value' conforme o esperado para b no caso de {'a': 1, 'b': null}
— MikeL 28/11
É uma boa prática criar métodos de utilidade auxiliar para coisas assim, para que, sempre que você precise alterar a lógica da validação de atributo, ela esteja em um único local e o código seja mais legível para os seguidores.
Por exemplo, crie um método auxiliar (ou classe JsonUtilscom métodos estáticos) em json_utils.py:
e depois use-o no seu projeto:
Há uma razão que estou usando, em data.get(attribute) or default_valuevez de simplesmente data.get(attribute, default_value):
Nos meus aplicativos, obter atributo com o valor 'null' é o mesmo que não obter o atributo. Se o seu uso for diferente, você precisará alterar isso.
Ou, se você quiser apenas pular os valores dos IDs ausentes, em vez de imprimir 'null':
Obviamente, na vida real, você provavelmente não deseja printcada identificação, mas armazená-las e fazer algo com elas, mas isso é outra questão.