Junior
Чӣ тавр санҷед, ки JSON майдони дуруст дорад?
sobes.tech AI
Ҷавоб аз AI
Рӯйхати чанд роҳ вуҷуд дорад:
-
Таҳқиқи мавҷудияти майдонҳо: Бо гузаштан аз майдонҳои интизорӣ ва санҷидани ҳузури онҳо дар 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"Майдони '{field}' вуҷуд надорад" return True, "Ҳама майдонҳои интизорӣ мавҷуданд" except json.JSONDecodeError: return False, "JSON нодуруст" except Exception as e: return False, f"Хатогӣ: {e}" # Мисоли истифода json_data = '{"name": "Alice", "age": 30}' expected = ["name", "age", "city"] result, message = check_json_fields(json_data, expected) print(result, message) # False Майдони 'city' вуҷуд надорад 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 Ҳама майдонҳои интизорӣ мавҷуданд -
Истифодаи JSON Schema: JSON Schema луғатест барои тасдиқи сохтори JSON. Ин роҳи боэътимод ва чандиртарин барои сохторҳои мураккаб аст.
from jsonschema import validate, SchemaError # Шема барои тасдиқи JSON schema = { "type": "object", "properties": { "name": {"type": "string"}, "age": {"type": "integer", "minimum": 0}, "city": {"type": "string"} }, "required": ["name", "age"] # Майдонҳои зарурӣ } def validate_json_with_schema(json_data, schema): try: validate(instance=json_data, schema=schema) return True, "JSON ба шема мувофиқ аст" except SchemaError as e: return False, f"Хатои шема: {e.message}" except Exception as e: return False, f"Хатои тасдиқот: {e.message}" # Мисоли истифода 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 ба шема мувофиқ аст invalid_data = {"name": "Bob"} # недостаёт age result_invalid, message_invalid = validate_json_with_schema(invalid_data, schema) print(result_invalid, message_invalid) # False Хатои тасдиқот: 'age' зарур аст invalid_type_data = {"name": "Charlie", "age": "twenty"} # нодурустии навъи age result_type_invalid, message_type_invalid = validate_json_with_schema(invalid_type_data, schema) print(result_type_invalid, message_type_invalid) # False Хатои тасдиқот: 'twenty' навъи 'integer' нест -
Истифодаи китобхонаҳо барои санҷиши намудҳо ва сохтор: Баъзе забонҳо китобхонаҳое доранд, ки имкон медиҳанд, ки сохтори маълумотро ба таври декларативӣ муайян кунанд.
- Python:
Pydantic,Marshmallow. - JavaScript:
Joi,Yup.
- Python:
-
Навиштани санҷишҳои махсус: Барои ҳолатҳои махсус ё логикаи мураккаб, шумо метавонед функсияҳои тасдиқро нависед.
Тарзи интихоб аз мураккабии сохтори JSON, талабот ба қатъият ва технологияи истифодаи он вобаста аст. JSON Schema беҳтарин роҳи тавсияшуда барои таъмини боэътимодӣ ва дастгирӣ мебошад.