JSONPath Test Aracı

Bir JSON belgesini yapıştırın ve $..book[?(@.price<10)] gibi bir JSONPath ifadesi girin. Test aracı bu ifadeyi belge üzerinde değerlendirir ve eşleşen tüm değerleri ile her bir eşleşmenin tam yolunu gösterir. Bu özellik, bir betik veya API spesifikasyonuna (Postman, k6, JMeter gibi araçlar JSONPath kullanır) yapıştırmaya hazırladığınız sorguyu doğrulamak için oldukça faydalıdır.

JSONPath ifadesi nasıl test edilir

  1. 1

    JSON belgesini yapıştırın

    Herhangi bir geçerli JSON, nesne, dizi veya derin şekilde iç içe yerleştirilmiş yapıda.

  2. 2

    İfadeyi yazın

    Kök için `$` ile başlayın; alt düğüm için `.`, özyinelemeli inme için `..` ve joker için `[*]` kullanın.

  3. 3

    Eşleşmeleri canlı olarak görün

    Her eşleşme, değeri ve tam JSONPath yolu ile birlikte, orijinal belgede vurgulanmış şekilde gösterilir.

  4. 4

    Sonuçları kopyalayın

    Eşleşmeleri bir JSON dizisi olarak kopyalayın veya her bir yolu sonraki kodda kullanmak üzere ayrı ayrı kopyalayın.

JSONPath sözdizimi referansı

İfade Anlam
$ Kök öğe
$.store $ öğesinin store adlı alt öğesi
$["store"] Aynısı, köşeli parantez biçimi
$..author Her derinlikteki tüm author özellikleri
$.store.book[*] Mağazadaki tüm kitaplar
$.store.book[0] İlk kitap
$.store.book[-1:] Son kitap
$.store.book[0:2] İlk iki kitap (dilim)
$.store.book[?(@.isbn)] isbn özelliği olan kitaplar
$.store.book[?(@.price < 10)] Fiyatı 10’un altındaki kitaplar
$.store.book[?(@.category == "fiction")] Kurgu kitapları
$..* Her yerdeki her değer

Filtre ifadeleri

Filtre ifadeleri, geçerli düğümü belirtmek için @ kullanır. Test aracı, yaygın operatörler ==, !=, <, >, <=, >=, &&, || ve regex =~ operatörünü destekler.

$.items[?(@.qty >= 10 && @.price < 50)]

JSONPath lehçeleri

Küçük uyumsuzluklara sahip birkaç JSONPath uygulaması mevcuttur. Bu test aracı, Goessner’ın orijinal spesifikasyonunu ve RFC 9535’teki iyileştirmeleri temel alır ve aşağıdaki sistemlerle uyumludur:

  • Jayway JsonPath (Java)
  • jsonpath-plus (JavaScript)
  • jsonpath-rw (Python)
  • jq temel yol ifadeleri

Uyumsuz özellikler (örneğin keyfi JS içeren betik ifadeleri) hata panelinde işaretlenir.

JSONPath tam bir ayrıştırıcıyı ne zaman geride bırakır

  • Test doğrulamaları: Postman’ın pm.expect(jsonData).to.have.jsonPath(...) ifadesi bir yol alır.
  • Yapılandırma çıkarımı: Bir kütüphane kullanmadan devasa bir API yanıtından tek bir değer çıkarın.
  • Yük testi betikleri: k6, JMeter ve Gatling, denetimler için JSONPath’i destekler.
  • Kubernetes / AWS CLI: --query ve --jsonpath bayrakları, komut satırından çıktıyı şekillendirmenize olanak tanır.

Yaygın hatalar

  • Bir dizide . kullanmak. $.users.0.name yanlıştır; $.users[0].name kullanın.
  • Derinlik için .. kullanmayı unutmak. $.name gibi bir yol yalnızca üst düzey name ile eşleşir; hepsini bulmak için $..name kullanın.
  • JSONPath’i jq ile karıştırmak. jq, kontrol akışı ve dönüşümler içeren bir üst kümedir; JSONPath ise tamamen veri çıkarma amacıyla kullanılır.
  • Regex sabitleme. =~ /foo/ alt dizilerle eşleşir; tam eşleşme için /^foo$/ kullanın.

Sık Sorulan Sorular

JSONPath; seçim, filtreleme ve kesme işlemlerini içeren saf bir çıkarım dilidir. jq ise kontrol akışı, değişkenler ve fonksiyonlar içeren tam kapsamlı bir sorgulama ve dönüşüm dilidir. Basit çıkarım için JSONPath daha taşınabilirdir; dönüşümler için ise jq kullanılmalıdır.

Goessner’ın orijinal spesifikasyonu ile RFC 9535’te yapılan iyileştirmeler birleştirilmiştir ve bu yapı Jayway JsonPath (Java) ile jsonpath-plus (Node) ile uyumludur. Lehçeye özgü genişletmeler (keyfi kod içeren betik ifadeleri) desteklenmez.

Evet. $..book[?(@.title =~ /^Harry.*/)], başlığı “Harry” ile başlayan tüm kitapları eşleştirir. Tam eşleşme için ^ ve $ kullanın.

Evet. Hem JSON hem de JSONPath değerlendiricisi tarayıcınızda çalışır. Belgeniz ve sorgularınız asla bu sekmenin dışına çıkmaz.

İlgili Araçlar

Araç diğer dillerde mevcuttur