Sobes.tech
Junior

JSON туура талааларды камтыганын кантип текшерсе болот?

sobes.tech AI

AIден жооп

Төмөндө бир нече ыкмалар бар:

  1. Талабы бар талаалардын бар экенин текшерүү: Күтүлгөн талаалар аркылуу өтүп, алардын 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 Бардык күтүлгөн талаалар бар
    
  2. JSON схемасын колдонуу: 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"Schema катасы: {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"} # туура эмес түрү
    result_type_invalid, message_type_invalid = validate_json_with_schema(invalid_type_data, schema)
    print(result_type_invalid, message_type_invalid) # False Текшерүү катасы: 'twenty' 'integer' эмес
    
  3. Китепканаларды колдонуу: Кээ бир тилдерде маалыматтын түзүлүшүн декларативдүү аныктоого мүмкүндүк берген китепканалар бар.

    • Python: Pydantic, Marshmallow.
    • JavaScript: Joi, Yup.
  4. Өзгөчө текшерүүлөрдү жазуу: Спецификалык учурлар же татаал логика үчүн өзүнчө текшерүү функцияларын жазсаңыз болот.

Тандоо JSON түзүмүнүн татаалдыгына, каттулушуна жана колдонулган технологиялык стекке жараша болот. JSON Schema эң сунушталган ыкма болуп саналат жана ишенимдүүлүк менен колдоо камсыздайт.