pt
English
Español
中國人
Tiếng Việt
Deutsch
Українська
Français
भारतीय
Türkçe
한국인
Italiano
Gaeilge
اردو
Indonesia
Polski JSON significa JavaScript Object Notation (Notação de Objectos JavaScript). Não só é leve como também é fácil de ler e escrever para os humanos. Da mesma forma, as máquinas acham-no simples de analisar e gerar. A análise é crucial ao lidar com conteúdo de APIs, arquivos de configuração ou outras fontes de informações armazenadas para qualquer desenvolvedor Python. Este artigo apresenta as noções básicas de análise de JSON usando o módulo Python, incluindo como usar json.dump python para salvar conteúdo.
O JSON estrutura os pormenores em pares chave-valor. Eis um exemplo básico de um objeto:
{
"name": "Alice",
"age": 30,
"is_student": false,
"courses": ["Math", "Science"]
}
Este exemplo de análise de json em Python contém elementos comuns: uma cadeia de caracteres, um número, um booleano e uma matriz. Familiarizar-se com esta estrutura torna muito mais fácil trabalhar em Python.
Ao implementar python parse json string facilmente usando o módulo embutido em Python. Este módulo inclui métodos como json.loads() para ler a partir de uma cadeia de caracteres e json.load() para ler a partir de um ficheiro. Por outro lado, json.dumps() e json.dump Python são utilizados para escrever informação numa cadeia e num ficheiro, respetivamente.
Vejamos como ler dados JSON, que discutiremos de seguida.
Se quiser ler json em python, então use json.loads() para analisar uma string e convertê-la num objeto Python:
import json
json_string = '{"name": "Alice", "age": 30, "is_student": false, "courses": ["Math", "Science"]}'
data = json.loads(json_string)
print(data)
Saída:
Para extrair informações de um ficheiro, utilize este método: json.load() e abra um ficheiro json em python:
import json
with open('data.json', 'r') as file:
data = json.load(file)
print(data)
Saída:
Antes de escrever, é frequentemente necessário ler ou carregar informação existente - e é aí que o método python load json file se torna útil. Assim que a informação é carregada corretamente, podes manipulá-la e escrevê-la de volta em vários formatos.
Para escrever informações numa cadeia de caracteres, utilize o método Python json.dumps:
import json
data = {
"name": "Alice",
"age": 30,
"is_student": False,
"courses": ["Math", "Science"]
}
json_string = json.dumps(data)
print(json_string)
Saída:
Para escrever os detalhes deste ficheiro, utilize o método Python json.dump:
import json
data = {
"name": "Alice",
"age": 30,
"is_student": False,
"courses": ["Math", "Science"]
}
with open('data.json', 'w') as file:
json.dump(data, file)
Os objectos aninhados são comuns quando se trabalha com estruturas de informação mais complexas, que podem facilmente tratar estas estruturas aninhadas.
import json
nested_json_string = '''
{
"name": "Alice",
"age": 30,
"is_student": false,
"courses": ["Math", "Science"],
"address": {
"street": "123 Main St",
"city": "Wonderland"
}
}
'''
data = json.loads(nested_json_string)
print(data['address']['city'])
Saída:
A linguagem não pode transformar automaticamente todos os objectos personalizados em JSON. Nesses casos, terá de criar um codificador personalizado.
import json
class Student:
def __init__(self, name, age, is_student):
self.name = name
self.age = age
self.is_student = is_student
class StudentEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, Student):
return obj.__dict__
return super().default(obj)
student = Student("Alice", 30, False)
json_string = json.dumps(student, cls=StudentEncoder)
print(json_string)
Saída:
Para desserializar em objectos personalizados, terá de implementar um descodificador personalizado que saiba como os tratar.
import json
class Student:
def __init__(self, name, age, is_student):
self.name = name
self.age = age
self.is_student = is_student
def student_decoder(dct):
return Student(dct['name'], dct['age'], dct['is_student'])
json_string = '{"name": "Alice", "age": 30, "is_student": false}'
student = json.loads(json_string, object_hook=student_decoder)
print(student.name)
Saída:
Trabalhar com detalhes de dados pode levar a vários erros comuns, particularmente ao analisar, gerar ou aceder a conteúdo estruturado. Usar um analisador python json confiável pode ajudar a identificar e corrigir esses problemas com mais eficiência. Aqui estão alguns dos mais comuns:
Um erro comum ao analisar um ficheiro json é encontrar um formato inválido. Requer aspas duplas à volta das chaves e dos valores das cadeias de caracteres, bem como o encaixe correto de parênteses e chavetas.
import json
invalid_json_string = "{'name': 'Alice', 'age': 30, 'is_student': False}"
try:
data = json.loads(invalid_json_string)
except json.JSONDecodeError as e:
print(f"Invalid JSON format: {e}")
Saída:
Por vezes, o conteúdo não inclui todas as chaves esperadas. A utilização do método get() permite-lhe lidar de forma segura com as chaves em falta, devolvendo um valor predefinido em vez de provocar um erro.
import json
json_string = '{"name": "Alice", "age": 30}'
data = json.loads(json_string)
is_student = data.get('is_student', False)
print(is_student)import json
json_string = '{"name": "Alice", "age": 30}'
data = json.loads(json_string)
is_student = data.get('is_student', False)
print(is_student)
Use o módulo pdb para definir pontos de interrupção e depurar seu código de análise.
import json
import pdb
json_string = '{"name": "Alice", "age": 30, "is_student": false}'
pdb.set_trace()
data = json.loads(json_string)
print(data)
A raspagem da Web geralmente envolve a recuperação de conteúdo de serviços que retornam as informações obtidas. Abaixo está um exemplo que utiliza a biblioteca de pedidos juntamente com o ponto de extremidade https://httpbin.org/anything.
Antes de começarmos, verifique se instalou o pacote requests:
pip install requests
Ao trabalhar com conteúdo estruturado, pode utilizar a biblioteca requests para facilitar as coisas. Basta emitir um pedido GET e o URL através de requests.get(url). Em seguida, é possível analisar a resposta com response.json(). A partir daí, é simples acessar partes específicas de informações como cabeçalhos, o agente do usuário, a origem ou a URL da solicitação e imprimi-las conforme necessário.
O código contém um forte tratamento de erros; capta json.JSONDecodeError quando ocorre um erro de descodificação e KeyError quando uma chave específica está ausente, o que faz com que o programa esteja protegido contra falhas "sem dados". Esta robustez do código permite-lhe, portanto, lidar perfeitamente com tarefas reais de recolha de dados da Web.
import requests
import json
url = 'https://httpbin.org/anything'
response = requests.get(url)
try:
data = response.json()
# Extração de dados específicos da resposta JSON
headers = data['headers']
user_agent = headers.get('User-Agent', 'N/A')
origin = data.get('origin', 'N/A')
url = data.get('url', 'N/A')
print(f"User Agent: {user_agent}")
print(f"Origin: {origin}")
print(f"URL: {url}")
except json.JSONDecodeError:
print("Error decoding JSON response")
except KeyError as e:
print(f"Key error: {e} not found in the JSON response")
Todo desenvolvedor deve saber como analisar um arquivo json em python. Com o módulo e a melhor forma de o fazer destacados por este manual, será capaz de ler, escrever e depurar com rapidez suficiente. Isso significa testar seu código regularmente e usar as ferramentas certas e os recursos mais recentes para obter um melhor desempenho. Este guia centra-se na análise de dados json em python para o ajudar a dominar estas tarefas de forma eficiente.
Ao efetuar a recolha de dados da Web, a análise torna-se essencial, uma vez que o conteúdo das API da Web é frequentemente apresentado neste formato. Ter competências para o processar e manipular permite-lhe extrair informações valiosas de uma variedade de fontes de forma eficiente.
A análise é uma competência fundamental para qualquer programador que trabalhe com APIs Web, ficheiros de configuração ou fontes externas. O manuseamento de informações - quer se trate de ler a partir de uma cadeia de caracteres, de um ficheiro, de escrever um resultado estruturado ou de lidar com objectos aninhados e personalizados - é simplificado através do módulo integrado em Python. Os programadores podem desbloquear os métodos Python json.load(), json.loads(), json.dump(), json.dumps() e aprender a lidar com problemas comuns, implementar codificadores ou descodificadores personalizados e criar aplicações à medida para interações de informação que sejam robustas e fiáveis. Dado que este formato é um padrão da Web para troca de informações, estas competências são valiosas para a recolha, manipulação de conteúdos e integração de vários serviços através de APIs. A utilização de código python simples para ler um ficheiro json torna a análise de um ficheiro json em python acessível a qualquer projeto, enquanto o json.dump python permite guardar material de forma eficiente.
Comentários: 0