Ana içeriğe geç

JSONPath Kullanımı ve Sorgulama Rehberi

**JSONPath**, XPath sorgulama dilinin JSON belgelerine uyarlanmış halidir. Derin ve karmaşık JSON yapıları içinden belirli verileri hızlıca süzmek ve çekmek amacıyla kullanılır.

Temel JSONPath İfadeleri

  • \\\`$\\\`: Kök nesneyi temsil eder.
  • \\\`.\\\` veya \\\`[]\\\`: Alt özellikleri sorgular.
  • \\\`..\\\`: Derin arama (recursive descent) yapar.
  • \\\`*\\\`: Joker karakterdir, tüm elemanları seçer.
  • \\\`?()\\\`: Filtre ifadesidir, belirli bir mantıksal koşulu sağlayanları listeler.
  • Örnek Sorgular

    Aşağıdaki gibi bir JSON verimiz olduğunu varsayalım:

    \\`json

    {

    "kütüphane": {

    "kitaplar": [

    { "ad": "Yazılım Tasarımı", "fiyat": 120 },

    { "ad": "Algoritmalar", "fiyat": 180 }

    ]

    }

    }

    \\`

    Sorgu Örnekleri:

  • Kütüphanedeki tüm kitapların adları: \\\`$.kütüphane.kitaplar[*].ad\\\`
  • Fiyatı 150'den küçük olan kitaplar: \\\`$.kütüphane.kitaplar[?(@.fiyat < 150)]\\\`
  • Belgedeki tüm fiyat özellikleri: \\\`$..fiyat\\\`
  • JSONPath, büyük veri kümelerinden hızlıca rapor üretmek ve veri madenciliği yapmak için geliştiricilere eşsiz bir kolaylık sağlar.

    Adım Adım Sorgu Geliştirme

    Karmaşık bir ifadeyi tek seferde yazmak yerine önce kök diziyi seçin, ardından alan erişimini ve en son filtreyi ekleyin. Her aşamada dönen sonuç sayısını kontrol etmek, yanlış seviyede uygulanan filtreleri erken yakalar. Filtre içindeki alanın bazı kayıtlarda bulunmayabileceğini de hesaba katın.

    Pratik Örnekler

  • Tüm ürün adları: $.products[*].name
  • Stokta olan ürünler: $.products[?(@.stock > 0)]
  • Belgedeki bütün id alanları: $..id
  • İlk üç kayıt: $.products[0:3]
  • Performans ve Güvenlik

    Recursive descent kullanan $.. ifadeleri büyük belgelerde çok sayıda düğümü tarar. Mümkün olduğunda kesin bir kök yolu kullanın. Kullanıcıdan alınan sorguları sunucu tarafında çalıştırıyorsanız süre, sonuç boyutu ve izin verilen operatörler için sınır koyun. JSONFlow sorguyu tarayıcıda çalıştırır; yine de milyonlarca düğümlü belgelerde dar bir yol seçmek daha hızlı ve öngörülebilirdir.