JSONPath Nedir?

JSONPath, JSON için bir sorgu dilidir; XML için XPath'in nasıl çalıştığına benzer. JSON yapısında gezinmenizi ve veri çıkarmanızı sağlayan yol ifadeleri kullanır. Bir JSONPath ifadesi $ ile başlar (belgenin kökünü temsil eder) ve nesneleri geçmek için nokta gösterimi (.key) veya köşeli parantez gösterimi (['key']) kullanır; dizi öğelerine erişmek için [index] kullanır.

JSONPath ilk olarak Stefan Gössner tarafından 2007'de tanımlanmış ve o zamandan beri API'ler, test çerçeveleri ve veri işleme boru hatlarında yaygın olarak kullanılan bir standart haline gelmiştir. JavaScript, Python, Java ve PostgreSQL, MySQL gibi veritabanları dahil olmak üzere birçok dil ve araçta desteklenir.

Araç Açıklaması

Bu araç, herhangi bir geçerli JSON belgesini yapıştırmanızı ve bunu sorgulamak için bir JSONPath ifadesi yazmanızı sağlar. Sonuçlar yazarken anında görüntülenir ve tüm eşleşen değerleri biçimlendirilmiş bir JSON dizisi olarak gösterir. Eşleşme sayısı ayrı olarak gösterilir, böylece kaç düğümün seçildiğini hızlıca doğrulayabilirsiniz.

Örnekler

Giriş JSON:

{
  "store": {
    "book": [
      { "title": "Moby Dick", "price": 8.99, "category": "fiction" },
      { "title": "War and Peace", "price": 12.5, "category": "fiction" },
      {
        "title": "A Brief History of Time",
        "price": 7.99,
        "category": "science"
      }
    ]
  }
}
İfade Sonuç
$.store.book[*].title Tüm kitap başlıkları
$.store.book[0] İlk kitap nesnesi
$.store.book[?(@.price < 10)] 10 dolardan daha ucuz kitaplar
$.store.book[?(@.category == "fiction")] Yalnızca kurgu kitapları
$..price Belgede herhangi bir yerdeki tüm fiyat değerleri

Özellikler

  • Gerçek zamanlı değerlendirme — ifadeyi yazarken veya JSON'u düzenlerken sonuçlar güncellenir
  • Eşleşme sayısını ayrılmış bir alanda gösterir
  • İfade alanında hızlı yeniden kullanım için kopyala düğmesi
  • Panodan JSON veya ifadeleri hızlıca eklemek için yapıştır düğmesi
  • Geçersiz JSON veya hatalı biçimlendirilmiş yol ifadeleri için hata raporlaması

Nasıl Çalışır

JSONPath ifadeleri, jsonpath-plus kütüphanesi kullanılarak ayrıştırılan JSON'a karşı değerlendirilir. $ sembolü kök öğeyi ifade eder. Alt düğümlere . veya [] ile erişilir, joker karakterler * ile, özyinelemeli iniş .. ile ve filtreler [?(...)] ile uygulanır. Sonuç, yalnızca bir eşleşme bulunsa bile her zaman eşleşen değerlerin bir dizisidir.

Seçenekler Açıklandı

Sözdizimi Anlamı
$ Kök öğe
.key veya ['key'] Alt özellik
[*] Tüm dizi öğeleri
[0] İlk dizi öğesi (sıfırdan başlayan indeks)
[-1] Son dizi öğesi
[0,2] İndeks 0 ve 2'deki öğeler
[0:2] İndeks 0'dan 1'e kadar olan öğeler (dilim)
..key Özyinelemeli iniş — herhangi bir derinlikte key bulur
[?(@.price > 5)] Filtre — price değeri 5'ten büyük olan öğeler
@ Geçerli düğüm (filtre ifadeleri içinde kullanılır)

Kullanım Alanları

  • API geliştirme — bir REST istemcisinde, test paketinde veya veri eşleme aracında kullanılan bir JSONPath seçicisinin bir API yanıtından beklenen alanları çıkarıp çıkarmadığını doğrulayın
  • Veri dönüştürme — bir dönüştürme betiği yazmadan önce iç içe geçmiş JSON yüklerinden hangi değerlerin çıkarılacağını belirleyin
  • JSONPath öğrenme — gerçek veriler üzerinde .., [*] ve [?()] gibi operatörlerin nasıl davrandığını anlamak için yol sözdizimini etkileşimli olarak deneyin

İpuçları

  • Belgenin tamamındaki her değeri almak için $..* kullanın — bilinmeyen JSON yapılarını keşfetmek için kullanışlıdır.
  • Filtre ifadeleri karşılaştırmaları (==, !=, <, >, <=, >=) destekler ve iç içe geçmiş özelliklere başvurabilir: [?(@.author.name == "Rees")].
  • Bir özelliği derinliğine bakılmaksızın eşleştirmek için .. özyinelemeli inişini kullanın: $..title belgede herhangi bir yerdeki tüm title alanlarını bulur.