Sobes.tech
Junior

JSON-un düzgün sahələrə sahib olduğunu necə yoxlamaq olar?

sobes.tech Süni İntellekt

AI-dan cavab

Müxtəlif yanaşmalar mövcuddur:

  1. Sahələrin mövcudluğunun yoxlanması: Gözlənilən sahələr üzrə keçin və onların JSON-da olub-olmadığını yoxlayın.

    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}' sahəsi yoxdur"
            return True, "Bütün gözlənilən sahələr mövcuddur"
        except json.JSONDecodeError:
            return False, "Yanlış JSON"
        except Exception as e:
            return False, f"Xəta: {e}"
    
    # İstifadə nümunəsi
    json_data = '{"name": "Alice", "age": 30}'
    expected = ["name", "age", "city"]
    result, message = check_json_fields(json_data, expected)
    print(result, message) # False 'city' sahəsi yoxdur
    
    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 Bütün gözlənilən sahələr mövcuddur
    
  2. JSON Schema istifadə edərək: JSON Schema JSON strukturunun doğrulanması üçün istifadə olunan lüğətdir. Bu, mürəkkəb strukturlar üçün ən etibarlı və çevik yanaşmadır.

    from jsonschema import validate, SchemaError
    
    # JSON doğrulama üçün schema
    schema = {
        "type": "object",
        "properties": {
            "name": {"type": "string"},
            "age": {"type": "integer", "minimum": 0},
            "city": {"type": "string"}
        },
        "required": ["name", "age"] # Zəruri sahələr
    }
    
    def validate_json_with_schema(json_data, schema):
        try:
            validate(instance=json_data, schema=schema)
            return True, "JSON schema-ya uyğundur"
        except SchemaError as e:
            return False, f"Schema xətası: {e.message}"
        except Exception as e:
            return False, f"Doğrulama xətası: {e.message}"
    
    # İstifadə nümunəsi
    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 schema-ya uyğundur
    
    invalid_data = {"name": "Bob"} # age yoxdur
    result_invalid, message_invalid = validate_json_with_schema(invalid_data, schema)
    print(result_invalid, message_invalid) # False Doğrulama xətası: 'age' tələb olunan xüsusiyyətdir
    
    invalid_type_data = {"name": "Charlie", "age": "twenty"} # age düzgün tipdə deyil
    result_type_invalid, message_type_invalid = validate_json_with_schema(invalid_type_data, schema)
    print(result_type_invalid, message_type_invalid) # False Doğrulama xətası: 'twenty' 'integer' tipində deyil
    
  3. Tip və struktur yoxlaması üçün kitabxanaların istifadəsi: Bəzi dillərdə məlumat strukturunu daha deklarativ şəkildə təyin etməyə imkan verən kitabxanalar mövcuddur.

    • Python: Pydantic, Marshmallow.
    • JavaScript: Joi, Yup.
  4. Özəl yoxlamaların yazılması: Xüsusi hallar və mürəkkəb loqika üçün öz yoxlama funksiyalarınızı yaza bilərsiniz.

Yanaşma seçimi JSON strukturunun mürəkkəbliyinə, tələblərə və istifadə olunan texnologiya yığınına bağlıdır. JSON Schema ən tövsiyə olunan yanaşmadır və etibarlılığı təmin edir.