Como ler e gravar arquivos Json em Python

How Read Write Json Files Python



Este artigo explicará como lidar com arquivos JSON e dados na linguagem de programação Python. Python vem com um módulo json integrado que torna o manuseio de dados JSON fácil e direto.

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.

importarjson

com 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.ferramenta

Executar 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_file

Alé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.