O JSON é o formato mais usado para trocar dados entre sistemas: APIs, arquivos de configuração, integrações. E o Python já vem com o módulo json para trabalhar com ele.
Do Python para JSON
O json.dumps transforma dicionários e listas em texto JSON:
import json
usuario = {"nome": "João", "idade": 28, "ativo": True, "cursos": ["Python", "Git"]}
texto = json.dumps(usuario, ensure_ascii=False, indent=2)
print(texto)
{
"nome": "João",
"idade": 28,
"ativo": true,
"cursos": [
"Python",
"Git"
]
}
Repare que o True do Python virou true no JSON. O ensure_ascii=False mantém os acentos legíveis, e o indent=2 deixa tudo formatado.
Do JSON para Python
O caminho contrário é o json.loads:
texto = '{"nome": "Maria", "idade": 31}'
dados = json.loads(texto)
print(dados["nome"]) # Maria
print(type(dados)) # <class 'dict'>
Salvando em arquivo
Para arquivos, use json.dump e json.load (sem o "s"):
with open("usuario.json", "w", encoding="utf-8") as arquivo:
json.dump(usuario, arquivo, ensure_ascii=False, indent=2)
with open("usuario.json", encoding="utf-8") as arquivo:
carregado = json.load(arquivo)
print(carregado["cursos"]) # ['Python', 'Git']
Uma forma de lembrar: o "s" de dumps e loads vem de string.
Tratando JSON inválido
Dados que vêm de fora podem estar quebrados. Proteja seu código:
texto = '{"nome": "Maria",}' # vírgula sobrando
try:
dados = json.loads(texto)
except json.JSONDecodeError as erro:
print(f"JSON inválido: {erro}")
Cuidado com tipos que o JSON não conhece
Datas, por exemplo, não existem em JSON. Converta para texto antes:
from datetime import date
evento = {"nome": "Grupy", "data": date(2026, 11, 21).isoformat()}
print(json.dumps(evento)) # {"nome": "Grupy", "data": "2026-11-21"}
Dica final
Use sempre encoding="utf-8" ao abrir arquivos e ensure_ascii=False ao salvar: assim seus acentos ficam corretos em qualquer sistema.
Contribua com novos artigos no nosso repositório.