Sobes.tech
Junior

Kā pārbaudīt, vai JSON satur pareizos laukus?

sobes.tech AI

Atbilde no AI

Ir vairākas pieejas:

  1. Lauku klātbūtnes pārbaude: Pārliecinieties, vai gaidītie lauki ir 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"Lauks '{field}' nav"
            return True, "Visi gaidītie lauki ir"
        except json.JSONDecodeError:
            return False, "Nepareizs JSON"
        except Exception as e:
            return False, f"Kļūda: {e}"
    
    # Piemērs
    json_data = '{"name": "Alice", "age": 30}'
    expected = ["name", "age", "city"]
    result, message = check_json_fields(json_data, expected)
    print(result, message) # False Lauks 'city' nav
    
    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 Visi gaidītie lauki ir
    
  2. Izmantojot JSON Schema: JSON Schema ir vārdnīca JSON struktūras validācijai. Tas ir visuzticamākais un elastīgākais pieejas veids sarežģītām struktūrām.

    from jsonschema import validate, SchemaError
    
    # Schema JSON validācijai
    schema = {
        "type": "object",
        "properties": {
            "name": {"type": "string"},
            "age": {"type": "integer", "minimum": 0},
            "city": {"type": "string"}
        },
        "required": ["name", "age"] # Obligātie lauki
    }
    
    def validate_json_with_schema(json_data, schema):
        try:
            validate(instance=json_data, schema=schema)
            return True, "JSON atbilst shēmai"
        except SchemaError as e:
            return False, f"Shēmas kļūda: {e.message}"
        except Exception as e:
            return False, f"Validācijas kļūda: {e.message}"
    
    # Piemērs
    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 atbilst shēmai
    
    invalid_data = {"name": "Bob"} # trūkst age
    result_invalid, message_invalid = validate_json_with_schema(invalid_data, schema)
    print(result_invalid, message_invalid) # False Validācijas kļūda: 'age' ir obligāts
    
    invalid_type_data = {"name": "Charlie", "age": "twenty"} # nepareizs age tips
    result_type_invalid, message_type_invalid = validate_json_with_schema(invalid_type_data, schema)
    print(result_type_invalid, message_type_invalid) # False Validācijas kļūda: 'twenty' nav 'integer' tips
    
  3. Izmantojot bibliotēkas tipu un struktūras pārbaudei: Dažas valodas ir ar bibliotēkām, kas ļauj deklaratīvi definēt datu struktūru.

    • Python: Pydantic, Marshmallow.
    • JavaScript: Joi, Yup.
  4. Izveidot savas pārbaudes funkcijas: Speciāliem gadījumiem vai sarežģītai loģikai var rakstīt savas validācijas funkcijas.

Izvēle ir atkarīga no JSON struktūras sarežģītības, stingrības prasībām un izmantotajām tehnoloģijām. JSON Schema ir ieteicamākais pieejas veids drošības un atbalsta nodrošināšanai.