Escreva JSON em um arquivo em Python

Vaibhav Vaibhav 22 junho 2021
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 bloco try-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.

Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

Artigo relacionado - Python JSON