Sobre JSON
JSON (JavaScript Object Notation) é um formato de arquivo e padrão de armazenamento de dados que usa pares de valores-chave para armazenar e trocar dados. É o formato de troca de dados mais amplamente usado, frequentemente visto em APIs RESTful, bancos de dados leves, arquivos de configuração e outros softwares offline ou online que precisam armazenar, recuperar e trocar dados. A maioria das linguagens de programação inclui bibliotecas para analisar e gravar dados JSON por padrão e JSON é um formato de dados agnóstico de linguagem de programação. Os valores armazenados em um arquivo JSON ou carga útil geralmente contêm strings, números e tipos de dados serializáveis como listas (matrizes).
Dicionários JSON e Python
Os dados JSON em python são convertidos em um objeto de dicionário usando o método de carregamento. É comum ver que algumas pessoas equiparam dados json a um dicionário python, já que a sintaxe para definir os dois é quase a mesma. No entanto, os dados json nada mais são do que uma string de texto estruturada em uma sintaxe rígida, enquanto um dicionário python é um objeto de estrutura de dados armazenado na memória. Se você deseja armazenar dados de dicionário em um arquivo de texto ou enviá-los para outro programa não-python, você terá que primeiro convertê-los em uma string de texto (bytes). Essa string de texto despejada / convertida é definida na sintaxe padrão do JSON e o processo de conversão de um dicionário Python em uma string compatível com json é chamado de serialização.
Leitura e despejo de dados JSON em Python
Os dados JSON podem ser recuperados como uma resposta de um servidor, lidos do arquivo, separados dos parâmetros de consulta de URL e assim por diante. Este artigo se concentrará principalmente na leitura de dados json de um arquivo armazenado localmente. Vamos supor que um arquivo test.json contenha os seguintes dados:
{'codinome': 'Eoan Ermine', 'versão': 'Ubuntu 19.10'}
Para ler o arquivo test.json em python, você pode usar o código abaixo:
importarjson
com abrir ('test.json') Comof:
dados=json.carga(f)
jogar fora=json.lixões(dados)
imprimir (dados)
imprimir (modelo(dados))
imprimir (jogar fora)
imprimir (modelo(jogar fora))
A primeira linha no código acima importa o módulo json. Na próxima linha, with open é usado para ler com segurança o conteúdo do arquivo. Dentro do bloco with open, o método json.load é usado para ler e armazenar o conteúdo do arquivo na variável de dados. Os dados carregados na etapa anterior são convertidos de volta em string json usando o método json.dump. Executar o código acima mostrará a seguinte saída:
{'nome de código':'Eoan Ermine', 'versão':'Ubuntu 19.10'}<classe 'dict'>
{'nome de código':'Eoan Ermine', 'versão':'Ubuntu 19.10'}
<classe 'str'>
Observe na saída acima que o método json.load lê dados json brutos em um dicionário python, enquanto os métodos json.dumps convertem um dicionário em uma string compatível com a estrutura JSON. Depois que um objeto JSON foi convertido em um objeto de dicionário Python, você pode usar métodos de dicionário Python integrados para manipular os dados. O exemplo acima é bastante básico e não inclui matrizes em dados JSON ou valores aninhados. No entanto, dentro do python, você pode manipular esses valores como quaisquer outros dicionários e listas aninhados.
Classificação e impressão bonita de dados JSON
O método json.dump oferece suporte a alguns parâmetros opcionais para classificar as chaves e imprimir a saída para facilitar a leitura.
importarjsoncom abrir ('test.json') Comof:
dados=json.carga(f)
jogar fora=json.lixões(dados,sort_keys=Verdade,recuar=4)
imprimir (jogar fora)
O código acima mostrará a seguinte saída:
{'codinome': 'Eoan Ermine',
'versão': 'Ubuntu 19.10'
}
Conversões de tipo de dados
A lista abaixo ilustra como os valores JSON são convertidos em objetos Python e vice-versa.
JSON | Pitão |
fragmento | p |
número | int ou float |
verdadeiro falso | Verdadeiro falso |
nulo | Nenhum |
variedade | Lista |
objeto | dict |
Módulo de linha de comando Json.tool
Python inclui um bom utilitário de linha de comando json.tool que pode ser usado para validar e imprimir strings e arquivos JSON.
$ echo'{' codinome ':' Eoan Ermine ',' versão ':' Ubuntu 19.10 '}'| python3 -m json.ferramentaExecutar o comando acima mostrará a seguinte saída:
{'codinome': 'Eoan Ermine',
'versão': 'Ubuntu 19.10'
}
Você também pode usar json.tool com arquivos JSON. Substitua in_file e out_file no comando abaixo com os valores desejados:
$ python3 -m json.ferramentain_file out_fileAlém de imprimir, classificar e validar dados JSON, json.tool não faz mais nada. Portanto, se você deseja manipular quaisquer dados JSON, deve escrever seu próprio código personalizado usando o módulo JSON integrado.