Como verificar se o JSON contém os campos corretos?
sobes.tech IA
Resposta da IA
Existem várias abordagens:
-
Verificação da presença de campos: Iterar sobre os campos esperados e verificar a sua presença no JSON.
import json def check_json_fields(json_string, expected_fields): try: data = json.loads(json_string) for field in expected_fields: if field not in data: return False, f"O campo '{field}' está ausente" return True, "Todos os campos esperados estão presentes" except json.JSONDecodeError: return False, "JSON incorreto" except Exception as e: return False, f"Erro: {e}" # Exemplo de uso json_data = '{"name": "Alice", "age": 30}' expected = ["name", "age", "city"] result, message = check_json_fields(json_data, expected) print(result, message) # False O campo 'city' está ausente json_data_valid = '{"name": "Bob", "age": 25}' expected_valid = ["name", "age"] result_valid, message_valid = check_json_fields(json_data_valid, expected_valid) print(result_valid, message_valid) # True Todos os campos esperados estão presentes -
Utilização de JSON Schema: JSON Schema é um dicionário para validar a estrutura do JSON. É a abordagem mais fiável e flexível para estruturas complexas.
from jsonschema import validate, SchemaError # Esquema para validação do JSON schema = { "type": "object", "properties": { "name": {"type": "string"}, "age": {"type": "integer", "minimum": 0}, "city": {"type": "string"} }, "required": ["name", "age"] # Campos obrigatórios } def validate_json_with_schema(json_data, schema): try: validate(instance=json_data, schema=schema) return True, "JSON corresponde ao esquema" except SchemaError as e: return False, f"Erro no esquema: {e.message}" except Exception as e: return False, f"Erro de validação: {e.message}" # Exemplo de uso valid_data = {"name": "Alice", "age": 30, "city": "New York"} result_valid, message_valid = validate_json_with_schema(valid_data, schema) print(result_valid, message_valid) # True JSON corresponde ao esquema invalid_data = {"name": "Bob"} # Falta 'age' result_invalid, message_invalid = validate_json_with_schema(invalid_data, schema) print(result_invalid, message_invalid) # False Erro de validação: 'age' é uma propriedade obrigatória invalid_type_data = {"name": "Charlie", "age": "twenty"} # Tipo errado para 'age' result_type_invalid, message_type_invalid = validate_json_with_schema(invalid_type_data, schema) print(result_type_invalid, message_type_invalid) # False Erro de validação: 'twenty' não é do tipo 'integer' -
Uso de bibliotecas para verificar tipos e estrutura: Algumas linguagens têm bibliotecas que permitem definir a estrutura de dados de forma mais declarativa.
- Python:
Pydantic,Marshmallow. - JavaScript:
Joi,Yup.
- Python:
-
Escrever verificações personalizadas: Para casos específicos ou lógica complexa, pode-se escrever funções de validação próprias.
A escolha do método depende da complexidade da estrutura JSON, dos requisitos de rigidez no controlo e da pilha tecnológica utilizada. JSON Schema é a abordagem mais recomendada para garantir fiabilidade e suporte.