Escreva JSON em um arquivo em Python
JSON é um formato de arquivo leve e legível, muito usado na indústria. JSON significa JavaScript Object Notation
. Como o nome sugere, JSON é muito popular entre os desenvolvedores da web e muito usado em aplicativos da web para enviar e recuperar dados do servidor ou de outros aplicativos.
Python vem com muitos pacotes ou módulos embutidos e tem muitos módulos externos disponíveis na Internet para nosso uso. Curiosamente, ele também possui um módulo embutido, json
, para lidar com dados JSON.
Em Python, o JSON pode ser representado de duas maneiras. Primeiro, como cordas. Uma string JSON se parece com isso.
jsonString = '{ "name": "DelftStack", "email": "DelftStack@domain.com", "age": 20, "country": "Netherlands", "city": "Delft"}'
Ao representar JSON como uma string, certifique-se de usar apenas aspas duplas (""
) para agrupar chaves e valores de string. JSON não oferece suporte para aspas simples e gera um erro se a aspa simples for usada.
A segunda maneira é usando o objeto Python ou popularmente conhecido como dicionário Python. Ele tem uma sintaxe semelhante à de um JSON.
A representação do JSON na forma de um dicionário Python seria assim.
jsonObject = {
"name": "DelftStack",
"email": "DelftStack@domain.com",
"age": 20,
"country": "Netherlands",
"city": "Delft",
}
Novamente, certifique-se de usar apenas aspas duplas.
Grave JSON em um arquivo com o módulo json
em Python
Suponha que você tenha uma variável que armazena um JSON na forma de uma string. Portanto, para gravá-lo em um arquivo JSON, você pode usar o código a seguir.
import json
fileName = "my-data.json"
jsonString = '{ "name": "DelftStack", "email": "DelftStack@domain.com", "age": 20, "country": "Netherlands", "city": "Delft"}'
jsonString = json.loads(jsonString)
file = open(fileName, "w")
json.dump(jsonString, file)
file.close()
Primeiro, importamos o módulo json
. Em seguida, armazenamos o nome do arquivo JSON e a própria string JSON em duas variáveis. Em seguida, estamos criando e abrindo um novo arquivo com o nome que escolhemos no modo escrever
.
Em seguida, usamos a função carrega
do módulo json
para converter a string JSON em um dicionário Python para gravá-la em um arquivo. A função aceita uma string JSON válida e a converte em um dicionário Python.
Observe que se uma string inválida for fornecida para esta função, ela gerará um erro
json.decoder.JSONDecodeError
. Portanto, certifique-se de passar uma string correta ou talvez use um blocotry-except-finally
para tratamento de erros.
Em seguida, usamos o método dump()
que o módulo json
nos fornece. Este método aceita um dicionário Python e um descritor de arquivo como seus parâmetros e grava os dados do dicionário no arquivo.
O método dump()
funciona se e somente se o arquivo não for aberto em um formato binário, ou seja, "wb"
e "rb"
não funcionarão e levarão a um TypeError
.
Por fim, fechamos o arquivo e o programa é encerrado. Um arquivo JSON com o nome que você definiu no programa será criado no diretório atual.
Se um arquivo com o mesmo nome e a mesma extensão existir no diretório de trabalho, o conteúdo desse arquivo será sobrescrito.
Agora, suponha que você deseje escrever um objeto Python ou um dicionário Python em um arquivo JSON. Nesse caso, consulte o seguinte trecho de código.
import json
fileName = "my-data.json"
jsonObject = {
"name": "DelftStack",
"email": "DelftStack@domain.com",
"age": 20,
"country": "Netherlands",
"city": "Delft",
}
file = open(fileName, "w")
json.dump(jsonObject, file)
file.close()
Neste caso, já temos o objeto python ou dicionário, e o dump()
, conforme explicado acima, aceita um dicionário como parâmetro e o grava no descritor de arquivo. Portanto, abrimos um arquivo no modo de gravação, gravamos os dados no arquivo usando o método dump()
e fechamos o arquivo.