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 json
módulo do Python . Você precisa importar o módulo antes de usá-lo.
import json
Analisar JSON em Python
O json
mó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.json
que 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.txt
no modo de escrita usando 'w'
. Se o arquivo ainda não existir, ele será criado. Em seguida, se json.dump()
transforma person_dict
em uma string JSON que será salva no person.txt
arquivo.
Ao executar o programa, o person.txt
arquivo 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 indent
e sort_keys
para 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 4
espaç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