JSON: JavaScript Object Notation
JSON (JavaScript Object Notation) é um formato de arquivo derivado do JavaScript e usado para trocas e armazenamento de dados. Arquivos JSON são leves e fáceis para humanos lerem e escreverem, e fáceis para máquinas analisarem e gerarem. Embora derivado do JavaScript, o JSON é independente de linguagem e pode ser usado com muitas linguagens de programação. A maioria das linguagens de programação tem funções internas ou bibliotecas para analisar JSON. Entre suas inúmeras aplicações, JSON é bastante utilizado em APIs da web, onde é usado para transmitir dados entre um servidor e um aplicativo.
Os dados JSON são representados como objetos chave-valor e matrizes. Ele usa chaves ({}) para objetos e colchetes ([]) para matrizes. No formato de pares chave-valor, arquivos JSON são muito parecidos com dicionários Python.
JSON e Python: conversão e abertura de arquivos
Para usar JSON com Python, a forma mais simples é utilizar o módulo json integrado. Para converter um objeto JSON em um objeto Python, use o método json.loads().
import json
# convertendo dados JSON em objetos Python
json_string = '{"nome": "Ana", "idade": 30}'
python_dict = json.loads(json_string)
print(python_dict['nome']) # resultado: Ana
O mesmo método pode ser usado para ler dados JSON de um arquivo:
import json
with open('dados.json', 'r') as file:
dados = json.load(file)
Serialização, escrita e salvamento de arquivos JSON com Python
Serialização é o termo usado para se referir ao processo de conversão de um objeto Python em JSON. Ela pode ser realizada com o método json.dumps():
import json
python_dict = {"nome": "Alice", "idade": 25}
json_string = json.dumps(python_dict)
print(json_string) # Resultado: {"nome": "Alice", "idade": 25}
Para escrever e salvar um arquivo JSON com Python, usamos o mesmo método json.dumb em combinação com o gerenciador de contexto with e o modo w (escrita) como opção selecionada:
import json
dados = {"nome": "Roberto", "linguagens": ["Python", "Java"]}
with open('dados.json', 'w') as file:
json.dump(dados, file)
Manipulação de formatos de dados mais complexos
JSON oferece suporte para tipos de dados básicos como strings, números, booleanos, entre outros. Para objetos Python mais complexos, muitas vezes é necessário usar uma codificação/decodificação personalizada. Um desses casos é o salvamento de objetos do módulo datetime do Python. Antes de salvá-los como JSON, eles precisam ser serializados para evitar erros, como ilustrado abaixo:
import json
from datetime import datetime
data = {"timestamp": datetime.now()}
json_string = json.dumps(data) # Resulado: Object of type {type(obj)} is not JSON serializable
Veja um exemplo com a serialização com o salvamento do arquivo JSON. Nesse exemplo, a serialização consiste na conversão do objeto retornado pelo método datetime.now() para string.
import json
from datetime import datetime
data = {"timestamp": datetime.now()}
json_string = json.dumps(data, default=str)
print(json_string) # Resultado: {"timestamp": "2024-06-30 16:16:55.341280"}
Veja também:
Concatenações com join() para strings em Python
O que é operador ternário em Python?
F-strings em Strings Multilinhas
Decodificação de strings em Python com decode()
Métodos para Manipular Strings em Python
Módulo Getpass para Prompts de Senhas
Aprenda a comparar textos com Python com Difflib
Módulo textwrap para formatação de textos
Manipulação de arquivos com Python
os.environ: gerenciamento de variáveis de ambiente com Python
Encontrou algum erro ou quer fazer uma sugestão? Por favor, entre em contato usando nosso formulário de contatos.