Neste tutorial, você aprenderá a analisar, ler e escrever JSON em Python com a ajuda de exemplos. Além disso, você aprenderá a converter JSON em dict e a imprimi-lo de maneira bonita.
JSON ( J ava S cript O bject N otation ) é um formato de dados popular usado para representar dados estruturados. É comum transmitir e receber dados entre um servidor e um aplicativo da web no formato JSON.
Em Python, JSON existe como uma string. Por exemplo:
 p = '("name": "Bob", "languages": ("Python", "Java"))' 
Também é comum armazenar um objeto JSON em um arquivo.
Módulo de importação json
Para trabalhar com JSON (string ou arquivo contendo objeto JSON), você pode usar o jsonmódulo do Python . Você precisa importar o módulo antes de usá-lo.
 import json 
Analisar JSON em Python
O jsonmódulo facilita a análise de strings JSON e arquivos contendo objetos JSON.
Exemplo 1: Python JSON para dict
Você pode analisar uma string JSON usando o json.loads()método. O método retorna um dicionário.
 import json person = '("name": "Bob", "languages": ("English", "Fench"))' person_dict = json.loads(person) # Output: ('name': 'Bob', 'languages': ('English', 'Fench')) print( person_dict) # Output: ('English', 'French') print(person_dict('languages'))
Aqui, pessoa é uma string JSON e pessoa_dict é um dicionário.
Exemplo 2: arquivo JSON de leitura em Python
Você pode usar o json.load()método para ler um arquivo que contém o objeto JSON.
Suponha que você tenha um arquivo denominado person.jsonque contém um objeto JSON.
  ("name": "Bob", "languages": ("English", "Fench") ) 
Veja como você pode analisar este arquivo:
  import json with open('path_to_file/person.json') as f: data = json.load(f) # Output: ('name': 'Bob', 'languages': ('English', 'Fench')) print(data) 
Aqui, usamos a open()função para ler o arquivo json. Em seguida, o arquivo é analisado usando um json.load()método que nos dá um dicionário chamado data.
Se você não sabe como ler e escrever arquivos em Python, recomendamos que verifique a E / S de arquivos Python.
Python Converter para string JSON
Você pode converter um dicionário em string JSON usando o json.dumps()método.
Exemplo 3: converter dict para JSON
  import json person_dict = ('name': 'Bob', 'age': 12, 'children': None ) person_json = json.dumps(person_dict) # Output: ("name": "Bob", "age": 12, "children": null) print(person_json) 
Aqui está uma tabela que mostra objetos Python e sua conversão equivalente para JSON.
| Pitão | JSON Equivalent | 
|---|---|
dict |  objeto | 
list, tuple |  matriz | 
str |  corda | 
int, float,int |  número | 
True |  verdade | 
False |  falso | 
None |  nulo | 
Gravando JSON em um arquivo
Para escrever JSON em um arquivo em Python, podemos usar o json.dump()método.
Exemplo 4: Gravando JSON em um arquivo
  import json person_dict = ("name": "Bob", "languages": ("English", "Fench"), "married": True, "age": 32 ) with open('person.txt', 'w') as json_file: json.dump(person_dict, json_file) 
No programa acima, abrimos um arquivo chamado person.txtno modo de escrita usando 'w'. Se o arquivo ainda não existir, ele será criado. Em seguida, se json.dump()transforma person_dictem uma string JSON que será salva no person.txtarquivo.
Ao executar o programa, o person.txtarquivo será criado. O arquivo contém o seguinte texto.
 ("name": "Bob", "languages": ("English", "Fench"), "married": true, "age": 32) 
JSON de impressão bonita em Python
Para analisar e depurar dados JSON, pode ser necessário imprimi-los em um formato mais legível. Isso pode ser feito passando parâmetros adicionais indente sort_keyspara json.dumps()e json.dump()método.
Exemplo 5: JSON de impressão bonita em Python
  import json person_string = '("name": "Bob", "languages": "English", "numbers": (2, 1.6, null))' # Getting dictionary person_dict = json.loads(person_string) # Pretty Printing JSON string back print(json.dumps(person_dict, indent = 4, sort_keys=True)) 
Quando você executa o programa, a saída será:
 ("idiomas": "Inglês", "nome": "Bob", "números": (2, 1,6, nulo)) 
No programa acima, usamos 4espaços para indentação. E as chaves são classificadas em ordem crescente.
A propósito, o valor padrão de indent é None. E, o valor padrão de sort_keys é False.
Leituras recomendadas:
- Python JSON para CSV e vice-versa
 - Python XML para JSON e vice-versa
 - Python simplejson
 








