Mövzunu Açan #1
jq ile JSON şemasını kontrol etme

Bu toplulukta sıkça karşılaştığımız sorunlardan biri, JSON verisinin beklenen yapıya uygun olup olmadığını güvenli bir şekilde doğrulamak. Özellikle API entegrasyonlarında veya konfigürasyon dosyalarında hatalı alan adları, beklenen türler veya zorunlu alanların eksik olması, sonraki işlemleri kırabilir. Bu nedenle, jq ile JSON şemasını kontrol etmek için pratik bir yol taramak mantıklı olur.


Giriş ve temel yaklaşım
  • jq, JSON üzerinde güçlü filtreler ve dönüştürmeler sağlayan bir komut satırı aracıdır. Doğrulama amacıyla doğrudan bir “JSON schema” motoru değildir, ancak basit doğrulama kurallarını hızlıca uygulamak için idealdir.
  • Temel yaklaşım, şemanın gerektirdiği alanları tek tek kontrol etmek ve her bir koşul için çıkış kodu veya hata mesajı üretmektir. Daha karmaşık doğrulamalar için birkaç adımı birleştirmek gerekir.


Pratik adımlar ve örnekler
[list]
  • Temel varlık kontrolleri: Zorunlu alanlar, tür kontrolü ve değer aralığı
    • Örnek JSON yapısı:

    KOD
    1234567891011{
      "user": {
        "id": 123,
        "name": "Ali",
        "email": "ali@example.com",
        "age": 30
      },
      "settings": {
        "notifications": true
      }
    }


    • Zorunlu alanlar ve tür kontrollerinin basit bir jq akışı:

    KOD
    12jq '(.user.id? // empty) as $id | (.user.name? // empty) as $name | (.user.email? // empty) as $email
      | select(type != "object" or ($id and $name and $email))' input.json

    (Bu yaklaşım, her alanın varlığını ve türünü kabaca doğrular; hatalı durumlarda exit code 0 yerine 1 döndürmek için additional logic eklemek gerekir.)

    [list]
  • Tür kontrolü ve değer aralıkları
    • Yaş alanını 0-120 arasında sınırlamak için:

    [code]jq 'if (.user.age? // -1) >= 0 and (.user.age? // -1)
  • Cavab vermək üçün daxil olmalısınız.

    Bu mövzunu görüntüləyən istifadəçilər (Cəmi: 4, Üzvlər: 4, Qonaqlar: 0)
    Cəmi: 4 (üzvlər: 4, qonaqlar: 0)
    0 sitat seçildi