Thanks to visit codestin.com
Credit goes to www.datacamp.com

Pular para o conteúdo principal

Python JSON Data: Um guia com exemplos

Aprenda a trabalhar com JSON em Python, incluindo serialização, deserialização, formatação, otimização de desempenho, manipulação de APIs e compreensão das limitações e alternativas do JSON.
Atualizado 29 de ago. de 2025  · 6 min lido

JSON (JavaScript Object Notation) é um formato leve de troca de dados que virou uma escolha popular pra troca de dados em várias linguagens de programação, incluindo Python. Com sua sintaxe simples e capacidade de representar estruturas de dados complexas, o JSON se tornou parte integrante do desenvolvimento web moderno, impulsionando tudo, desde APIs até aplicativos web do lado do cliente. 

Neste tutorial, vou falar sobre o básico de como trabalhar com JSON em Python, incluindo serialização, deserialização, leitura e gravação de arquivos JSON, formatação e muito mais. Ao final deste tutorial, você vai:

  • Entenda o JSON e suas vantagens e desvantagens
  • Identifique casos de uso para JSON e compare-o com alternativas comuns.
  • Serialize e deserialize dados JSON de forma eficaz em Python
  • Trabalhe com dados JSON na linguagem de programação Python
  • Formate dados JSON em Python usando a biblioteca `json`
  • Otimize o desempenho ao trabalhar com dados json
  • Gerencie dados JSON no desenvolvimento de API.

O que é JSON?

JSON (JavaScript Object Notation) é um formato leve e independente de linguagem para troca de dados, que é bem popular e compatível com várias linguagens de programação e estruturas. É uma boa opção para troca de dados quando você precisa de um formato simples e fácil de ler, que suporte estruturas de dados complexas e possa ser facilmente compartilhado entre diferentes programas de computador.

O caso de uso perfeito para JSON é quando você precisa trocar dados entre aplicativos baseados na web, tipo quando você preenche um formulário em um site e as informações são enviadas para um servidor para serem processadas. 

O JSON é ideal para esse cenário porque é um formato leve e eficiente, que precisa de menos largura de banda e espaço de armazenamento do que outros formatos, como o XML. Além disso, o JSON suporta estruturas de dados complexas, como objetos e matrizes aninhados, o que facilita a representação e a troca de dados estruturados entre diferentes sistemas. Outros casos de uso do formato JSON são:

  1. Interface de Programação de Aplicativos (APIs). O JSON é muito usado pra criar APIs (Interfaces de Programação de Aplicativos) que permitem que diferentes sistemas e aplicativos se comuniquem entre si. Por exemplo, muitas APIs baseadas na web usam JSON como formato de dados para trocar informações entre diferentes aplicativos, facilitando a integração com diferentes linguagens de programação e plataformas.
  2. Arquivos de configuração. O JSON oferece um formato simples e fácil de ler para guardar e recuperar dados de configuração. Isso pode incluir configurações do aplicativo, como o layout da interface do usuário ou as preferências do usuário.
  3. IoT (Internet das Coisas).  Os dispositivos IoT geralmente geram um monte de dados, que podem ser armazenados e transmitidos entre sensores e outros dispositivos de forma mais eficiente usando JSON. 

Processo de solicitação JSON

Exemplo de dados JSON

python_obj = {
  "name": "John Doe",
  "age": 30,
  "email": "[email protected]",
  "is_employee": True,
  "hobbies": [
    "reading",
    "playing soccer",
    "traveling"
  ],
  "address": {
    "street": "123 Main Street",
    "city": "New York",
    "state": "NY",
    "zip": "10001"
  }
}

print(python_obj)

Neste exemplo, temos um objeto JSON que representa uma pessoa. O objeto tem várias propriedades: nome, idade, e-mail e é_funcionário. A propriedade hobbies é uma matriz que tem três strings. A propriedade endereço é um objeto com várias propriedades próprias, como rua, cidade, estado e CEP.

Observe que os dados JSON geralmente são formatados como uma série de pares chave-valor, com a chave representada como uma string e o valor representado em vários tipos, como string, número, booleano, matriz ou objeto.

Vantagens e desvantagens de usar JSON

Abaixo, selecionamos alguns dos pontos positivos e negativos do uso do JSON. 

Vantagens de trabalhar com um arquivo JSON:

Algumas das principais vantagens do JSON são:

  1. Leve e fácil de ler. Os arquivos JSON são fáceis de ler e entender, mesmo para quem não tem conhecimentos técnicos. Eles também são leves, o que significa que podem ser facilmente transmitidos pela internet.
  2. Interoperável: Os arquivos JSON são interoperáveis, o que significa que podem ser facilmente trocados entre diferentes sistemas e plataformas. Isso porque o JSON é um formato padrão amplamente suportado, e muitos aplicativos e serviços usam o JSON para troca de dados. Por isso, trabalhar com arquivos JSON pode facilitar a integração de diferentes partes de um sistema ou o compartilhamento de dados entre diferentes aplicativos.
  3. Fácil de validar: Os arquivos JSON podem ser facilmente validados em relação a um esquema para garantir que estejam em conformidade com uma estrutura ou conjunto de regras específico. Isso pode ajudar a detectar erros e inconsistências nos dados logo no início, o que pode economizar tempo e evitar problemas no futuro. Os esquemas JSON também podem ser usados para gerar automaticamente documentação para os dados armazenados no arquivo JSON.

Contras de trabalhar com um arquivo JSON:

  1. Suporte limitado para estruturas de dados complexas: Embora os arquivos JSON suportem uma ampla variedade de tipos de dados, eles não são adequados para armazenar estruturas de dados complexas, como gráficos ou árvores. Isso pode dificultar o trabalho com certos tipos de dados usando arquivos JSON.
  2. Sem imposição de esquema: Os arquivos JSON não impõem nenhum esquema, o que significa que é possível armazenar dados inconsistentes ou inválidos em um arquivo JSON. Isso pode causar erros e bugs em aplicativos que dependem dos dados do arquivo.
  3. Recursos limitados de consulta e indexação: Os arquivos JSON não oferecem o mesmo nível de recursos de consulta e indexação que os bancos de dados tradicionais. Isso pode dificultar a realização de pesquisas complexas ou a recuperação de subconjuntos específicos de dados de um arquivo JSON grande.

Principais alternativas ao JSON para uma troca eficiente de dados


Tem várias alternativas ao JSON que podem ser usadas pra troca ou armazenamento de dados, cada uma com seus pontos fortes e fracos. Algumas das alternativas populares ao JSON são:

  1. XML (Linguagem de Marcação Extensível). XML é uma linguagem de marcação que usa tags para definir elementos e atributos para descrever os dados. É um formato mais detalhado que o JSON, mas tem um suporte forte para validação de esquema e estrutura de documentos.
  2. YAML (Mais uma linguagem de marcação). YAML é um formato de serialização de dados legível por humanos, feito pra ser fácil de ler e escrever. É um formato mais curto que o XML e dá suporte a tipos de dados complexos e comentários.
  3. MessagePack. O MessagePack é um formato de serialização binária que foi criado para ser mais compacto e eficiente do que o JSON. Ele suporta tipos de dados complexos e é ideal para transferir dados em redes de baixa largura de banda.
  4. Buffers de protocolo. Protocol Buffers é um formato de serialização binária desenvolvido pelo Google. Ele foi feito pra ser super eficiente e tem um suporte forte pra validação de esquema, o que o torna ideal pra sistemas distribuídos em grande escala.
  5. BSON (JSON binário). BSON é um formato de serialização binária que amplia o formato JSON com tipos de dados adicionais e otimizações para maior eficiência. Ele foi feito pra armazenar e transferir dados de forma eficiente em bancos de dados MongoDB.

A escolha do formato de troca de dados depende do caso específico e dos requisitos da aplicação. O JSON continua sendo uma escolha popular por ser simples, versátil e bem usado, mas outros formatos como XML, YAML, MessagePack, Protocol Buffers e BSON podem ser mais legais para certos casos.

Bibliotecas Python para trabalhar com dados JSON

Tem alguns pacotes Python bem conhecidos que você pode usar pra trabalhar com arquivos JSON:

  1. json. Esse é um pacote Python integrado que oferece métodos para codificar e descodificar dados JSON.
  2. simplejson. Esse pacote oferece um codificador e decodificador JSON rápido com suporte para tipos específicos do Python.
  3. ujson. Esse pacote é um codificador e decodificador JSON super rápido para Python.
  4. jsonschema. Esse pacote oferece uma maneira de validar dados JSON em relação a um esquema específico.

Serialização e desserialização JSON

A serialização e a deserialização JSON são os processos de conversão de dados JSON para e de outros formatos, como objetos Python ou strings, para transmitir ou armazenar os dados.

Serialização é o processo de transformar um objeto ou estrutura de dados em uma string JSON. Esse processo é necessário para transmitir ou armazenar os dados num formato que possa ser lido por outros sistemas ou programas. A serialização JSON é uma técnica comum usada no desenvolvimento web, onde os dados são frequentemente transmitidos entre diferentes sistemas ou aplicativos.

Já a desserialização é o processo de transformar uma string JSON de volta em um objeto ou estrutura de dados. Esse processo é necessário para usar os dados em um programa ou sistema. A desserialização JSON é frequentemente usada no desenvolvimento web para analisar dados recebidos de uma API ou outra fonte.

A serialização e a desserialização JSON são técnicas importantes para trabalhar com dados JSON em vários contextos, desde o desenvolvimento web até a análise de dados e muito mais. Muitas linguagens de programação oferecem bibliotecas ou pacotes integrados para facilitar e tornar mais eficiente a serialização e a desserialização.

Aqui estão algumas funções comuns da biblioteca json que são usadas para serialização e desserialização.

1. json.dumps()

Essa função é usada para transformar um objeto Python em uma string JSON. A função dumps() pega um único argumento, o objeto Python, e devolve uma string JSON. Aqui vai um exemplo:

import json

# Python object to JSON string
python_obj = {'name': 'John', 'age': 30}

json_string = json.dumps(python_obj)
print(json_string)  

# Expected output: {"name": "John", "age": 30}

2. json.loads()

Essa função é usada para analisar uma string JSON em um objeto Python. A função loads() pega um único argumento, a string JSON, e devolve um objeto Python. Aqui vai um exemplo: 

import json

# JSON string to Python object
json_string = '{"name": "John", "age": 30}'

python_obj = json.loads(json_string)

print(python_obj)  

# Expected output: {'name': 'John', 'age': 30}

3. json.dump()

Essa função é usada para serializar um objeto Python e gravá-lo em um arquivo JSON. A função dump() recebe dois argumentos: o objeto Python e o objeto arquivo. Aqui vai um exemplo:

import json

# serialize Python object and write to JSON file
python_obj = {'name': 'John', 'age': 30}
with open('data.json', 'w') as file:
    json.dump(python_obj, file)

# No expected output

4. json.load()

Essa função é usada para ler um arquivo JSON e analisar seu conteúdo em um objeto Python. A função load() pega um único argumento, o objeto arquivo, e devolve um objeto Python. Aqui vai um exemplo:

import json

# read JSON file and parse contents
with open('data.json', 'r') as file:
    python_obj = json.load(file)
print(python_obj)  

# Expected output: {'name': 'John', 'age': 30}

Python e JSON têm tipos de dados diferentes, sendo que o Python oferece uma gama mais ampla de tipos de dados do que o JSON. Enquanto o Python consegue guardar estruturas de dados complexas, como conjuntos e dicionários, o JSON só dá conta de lidar com strings, números, booleanos, matrizes e objetos. Vamos ver algumas das diferenças:

Python

JSON

ditar

Objeto

lista

Matriz

tupla

Matriz

str

String

int

Número

flutuar

Número

Verdadeiro

verdadeiro

Falso

falso

Nenhum

Nada.

Lista Python para JSON

Pra converter uma lista Python pro formato JSON, dá pra usar o método json.dumps() da biblioteca json.

import json

my_list = [1, 2, 3, "four", "five"]

json_string = json.dumps(my_list)

print(json_string)

# Expected output: [1, 2, 3, "four", "five"]

Neste exemplo, temos uma lista chamada my_list com uma mistura de números inteiros e strings. Depois, usamos o método json.dumps() para transformar a lista numa string no formato JSON, que guardamos na variável json_string.

Formatação de dados JSON

Em Python, a função json.dumps() oferece opções para formatar e ordenar a saída JSON. Aqui estão algumas opções comuns:

1. Recuo

Essa opção define quantos espaços usar para recuar na string JSON de saída. Por exemplo:

import json

data = {
    "name": "John",
    "age": 30,
    "city": "New York"
}

json_data = json.dumps(data, indent=2)

print(json_data)

# Expected output: a JSON formatted string with an indentation of 2 spaces for each level of nesting:
# {
#   "name": "John",
#   "age": 30,
#   "city": "New York"
# }

2. Sort_keys

Essa opção diz se as chaves na string JSON de saída devem ser organizadas em ordem alfabética. Por exemplo:

import json

data = {
    "name": "John",
    "age": 30,
    "city": "New York"
}

json_data = json.dumps(data, sort_keys=True)

print(json_data)

# Expected output: {"age": 30, "city": "New York", "name": "John"}

3. Separadores

Essa opção permite que você especifique os separadores usados na string JSON de saída. O parâmetro separadores aceita uma tupla de duas strings, onde a primeira string é o separador entre os pares chave-valor do objeto JSON e a segunda string é o separador entre os itens nas matrizes JSON. Por exemplo:

import json

data = {
    "name": "John",
    "age": 30,
    "city": "New York"
}

json_data = json.dumps(data, separators=(",", ":"))

print(json_data)

# Expected output: a JSON formatted string with a comma separator between key-value pairs and a colon separator between keys and values:
# {"name":"John","age":30,"city":"New York"}

Exemplo em Python - Dados JSON em APIs

import requests
import json

url = "https://jsonplaceholder.typicode.com/posts"
response = requests.get(url)

if response.status_code == 200:
    data = json.loads(response.text)
    print(data)
else:
    print(f"Error retrieving data, status code: {response.status_code}")

# Expected output: a JSON object as the response of the request

SAÍDA FORMATAÇÃO:

Dados de saída

Esse código usa as bibliotecas requests e json em Python pra fazer uma solicitação pra URL "https://jsonplaceholder.typicode.com/posts" e pegar os dados. A linha requests.get(url) faz a solicitação e guarda a resposta na variável response.

A linha if response.status_code == 200: verifica se o código de resposta é 200, o que significa que a solicitação foi bem-sucedida. Se a solicitação for bem-sucedida, o código carrega o texto da resposta em um dicionário Python usando o método json.loads() e o armazena na variável data.


Se você quiser saber mais sobre esse assunto, dá uma olhada no nosso tutorial sobre Web APIs, Python Requests e como fazer uma solicitação HTTP em Python.

Otimizando o desempenho do JSON em Python

Quando você tá lidando com um monte de dados JSON no Python, é importante otimizar o desempenho do seu código pra garantir que ele funcione direitinho. Aqui vão algumas dicas pra otimizar o desempenho do JSON no Python:

  1. Use as bibliotecas cjson ou ujson. Essas bibliotecas são mais rápidas do que a biblioteca JSON padrão em Python e podem melhorar bastante o desempenho da serialização e desserialização JSON.
  2. Evite conversões desnecessárias. Converter objetos Python e dados JSON pode ser bem demorado em termos de desempenho. Se der, tenta trabalhar direto com os dados JSON e evita conversões desnecessárias.
  3. Use geradores para grandes volumes de dados JSON. Quando você tá lidando com um monte de dados JSON, usar geradores pode ajudar a reduzir o uso de memória e melhorar o desempenho.
  4. Minimize a sobrecarga da rede. Quando você está mandando dados JSON por uma rede, minimizar a quantidade de dados transferidos pode melhorar o desempenho. Use técnicas de compactação, como gzip, para reduzir o tamanho dos dados JSON antes de transmiti-los pela rede.
  5. Use o cache. Se você costuma acessar os mesmos dados JSON, armazená-los em cache pode melhorar o desempenho, reduzindo o número de solicitações para carregar os dados.
  6. Otimizar a estrutura de dados: A estrutura dos dados JSON também pode afetar o desempenho. Usar uma estrutura de dados mais simples e plana pode melhorar o desempenho em relação a uma estrutura complexa e aninhada.

Limitações do formato JSON

Embora o JSON seja um formato popular para troca de dados em muitas aplicações, existem algumas limitações de implementação que devem ser consideradas:

  1. Falta de suporte para alguns tipos de dados. O JSON tem suporte limitado para certos tipos de dados, como dados binários, datas e horas. Embora existam soluções alternativas para representar esses tipos em JSON, isso pode tornar a serialização e a desserialização mais complicadas.
  2. Não dá pra fazer comentários. Diferente de outros formatos, como YAML e XML, JSON não aceita comentários. Isso pode dificultar a adição de comentários aos dados JSON para fornecer contexto ou documentação.
  3. Flexibilidade limitada para extensões. Embora o JSON suporte extensões por meio de propriedades personalizadas ou da propriedade $schema, o formato não oferece tanta flexibilidade para extensões quanto outros formatos, como XML ou YAML.
  4. Não tem um padrão para manter a ordem das chaves. O JSON não tem uma maneira padrão de manter a ordem das chaves em um objeto, o que dificulta comparar ou juntar objetos JSON.
  5. Suporte limitado para referências circulares. O JSON tem um suporte limitado para referências circulares, onde um objeto se refere a si mesmo. Isso pode dificultar a representação de algumas estruturas de dados em JSON.

É importante estar ciente dessas limitações de implementação ao trabalhar com dados JSON para garantir que o formato seja adequado às suas necessidades e evitar possíveis problemas com serialização, desserialização e representação de dados.

Conclusão

JSON é um formato versátil e muito usado pra troca de dados no desenvolvimento web moderno, e o Python oferece um conjunto poderoso de ferramentas pra trabalhar com dados JSON. Se você está criando uma API ou trabalhando com aplicativos web do lado do cliente, entender o básico do JSON em Python é uma habilidade essencial para qualquer desenvolvedor moderno. Dominando as técnicas descritas neste tutorial, você estará no caminho certo para trabalhar com dados JSON em Python e criar aplicativos robustos e escaláveis que aproveitam o poder desse formato poderoso de intercâmbio de dados.

Se você quer aprender a criar pipelines para importar dados mantidos em formatos de armazenamento comuns, confira nosso Ingestão de dados simplificada com pandas. Você vai usar o pandas, uma importante biblioteca Python para análise, para obter dados de várias fontes, incluindo uma planilha com respostas de pesquisas, um banco de dados de solicitações de serviços públicos e uma API para um site popular de avaliações. 

Perguntas frequentes

Como posso lidar com arquivos JSON que são grandes demais para caber na memória?

Pra trabalhar com arquivos JSON grandes que não cabem na memória, você pode processar os dados aos poucos usando a biblioteca ijson do Python ou ler o arquivo linha por linha se o JSON estiver estruturado como uma série de objetos menores. Por exemplo:

import ijson

with open('large_file.json', 'r') as file:
    for item in ijson.items(file, 'item'):
        print(item)  # Process each JSON item individually

Como faço pra juntar dois objetos JSON no Python?

Você pode juntar dois objetos JSON primeiro deserializando-os em dicionários Python e, em seguida, atualizando um dicionário com o conteúdo do outro:

import json

json1 = '{"name": "Alice", "age": 25}'
json2 = '{"city": "New York", "hobbies": ["reading", "cycling"]}'

dict1 = json.loads(json1)
dict2 = json.loads(json2)

dict1.update(dict2)
merged_json = json.dumps(dict1)

print(merged_json)
# Output: {"name": "Alice", "age": 25, "city": "New York", "hobbies": ["reading", "cycling"]}

Os dados JSON podem incluir comentários e como posso lidar com eles no Python?

O JSON não suporta comentários de forma nativa, mas se você estiver trabalhando com um arquivo JSON não padrão que inclua comentários (por exemplo, usando // ou /* */), você pode pré-processar o arquivo para removê-los antes da análise. Aqui vai um exemplo:

import json
import re

with open('file_with_comments.json', 'r') as file:
    content = file.read()

# Remove comments
content = re.sub(r'//.*?$|/\*.*?\*/', '', content, flags=re.DOTALL | re.MULTILINE)

data = json.loads(content)
print(data)

Moez Ali's photo
Author
Moez Ali
Codestin Search App
Codestin Search App

Cientista de dados, fundador e criador do PyCaret

Tópicos

Saiba mais sobre Python

Curso

Introduction to Databases in Python

4 h
99.6K
In this course, you'll learn the basics of relational databases and how to interact with them.
Ver detalhesCodestin Search App
Iniciar curso
Ver maisCodestin Search App
Relacionado

blog

Como aprender Python do zero em 2024: um guia especializado

Descubra como aprender Python, suas aplicações e a demanda por competências em Python. Comece sua jornada em Python hoje mesmo ​com nosso guia detalhado.
Matt Crabtree's photo

Matt Crabtree

15 min

Tutorial

Desenvolvimento de back-end em Python: Um guia completo para iniciantes

Este guia completo ensina a você os fundamentos do desenvolvimento de back-end em Python. Aprenda conceitos básicos, estruturas e práticas recomendadas para você começar a criar aplicativos da Web.
Oluseye Jeremiah's photo

Oluseye Jeremiah

Tutorial

Tutorial de docstrings em Python

Saiba mais sobre os Docstrings do Python. Encontre diferentes exemplos e tipos de formatos de docstrings para Sphinx, Numpy e Pydoc.
Aditya Sharma's photo

Aditya Sharma

Tutorial

Configuração do VSCode para Python: Um guia completo

Experimente uma forma simples, divertida e produtiva de desenvolvimento em Python, aprendendo sobre o VSCode e suas extensões e recursos.
Abid Ali Awan's photo

Abid Ali Awan

Tutorial

Tutorial do Python pandas: O guia definitivo para iniciantes

Você está pronto para começar sua jornada com os pandas? Aqui está um guia passo a passo sobre como você pode começar.
Vidhi Chugh's photo

Vidhi Chugh

Ver maisVer mais