```html
Hiç devasa bir JSON yanıtının içinde, ihtiyacınız olan o tek veri parçasını bulmaya çalıştınız mı? Eğer denediyseniz, bunun samanlıkta iğne aramaya benzeyebileceğini bilirsiniz. İşte JSON verileriyle API'lerde uğraşırken hayatınızı çok daha kolay hale getirebilecek küçük bir araç olan JSONPath devreye giriyor.
JSONPath Nedir?
JSONPath, XML için XPath'e benzer şekilde, JSON için bir sorgu dilidir. Basit ve sezgisel bir sözdizimi kullanarak JSON verilerinizin içinden gezinmenize ve belirli parçalarını çıkarmanıza olanak tanır. Bunu, JSON verileriniz üzerinde sorgular çalıştırıp, tüm yanıta girmeden tam olarak ihtiyacınız olanı elde etmenin bir yolu olarak düşünün.
Neden JSONPath Kullanmalısınız?
Bir API'den devasa bir JSON yanıtınız olduğunu hayal edin; tek ihtiyacınız olan, derinlemesine iç içe geçmiş belirli bir alanın değeri. JSONPath olmadan, genellikle JSON'u ayrıştırmak için bir dizi kod yazmanız gerekir, bu da sıkıcı ve hataya açık olabilir. JSONPath, tam olarak neyi çıkarmak istediğinizi belirlemenize izin vererek bunu basitleştirir, kodunuzu daha temiz ve bakımı daha kolay hale getirir.
JSONPath Nasıl Çalışır?
JSONPath, daha karmaşık sorgular için bazı ek özelliklerle birlikte, JavaScript nesne gösterimine benzer bir sözdizimi kullanır. İşte temel sözdiziminin hızlı bir özeti:
$
: Kök nesneyi veya diziyi temsil eder..
veya[]
: Çocuk operatörü; nesnenin bir özelliğine veya dizinin bir öğesine erişmek için kullanılır.*
: Wildcard; tüm öğeleri veya alanları eşleştirir...
: Özyinelemeli iniş; eşleşen düğümleri herhangi bir seviyede arar.?()
: Bir filtre uygular (ifade doğru olarak değerlendirilmelidir).()
: Temel komut dosyası motorunu kullanarak komut dosyası ifadesi.
JSONPath'in nasıl çalıştığını görmek için bazı örneklere dalalım.
Temel JSONPath Örnekleri
Bir film veritabanı API'sinden aşağıdaki JSON verilerini düşünün:
{
"movies": {
"action": [
{ "title": "Mad Max: Fury Road", "director": "George Miller", "year": 2015, "rating": 8.1 },
{ "title": "John Wick", "director": "Chad Stahelski", "year": 2014, "rating": 7.4 }
],
"drama": [
{ "title": "The Shawshank Redemption", "director": "Frank Darabont", "year": 1994, "rating": 9.3 },
{ "title": "Forrest Gump", "director": "Robert Zemeckis", "year": 1994, "rating": 8.8 }
],
"comedy": [
{ "title": "The Grand Budapest Hotel", "director": "Wes Anderson", "year": 2014, "rating": 8.1 }
]
}
}
Tüm aksiyon filmlerini çıkarma:
$.movies.action[*]
Bu size tüm aksiyon filmi nesnelerinin bir dizisini verecektir.
Tüm drama filmlerinin başlıklarını çıkarma:
$.movies.drama[*].title
Bu, tüm drama filmlerinin başlıklarının bir dizisini döndürecektir: ["The Shawshank Redemption", "Forrest Gump"]
.
"Mad Max: Fury Road" filminin derecelendirmesini çıkarma:
$.movies.action[?(@.title == "Mad Max: Fury Road")].rating
Bu, "Mad Max: Fury Road" filminin derecelendirmesini döndürecektir: 8.1
.
2014'te yayınlanan tüm filmleri bulma:
$.movies..[?(@.year == 2014)]
Bu, bu durumda 2014'te yayınlanan tüm filmleri döndürecektir: ["John Wick", "The Grand Budapest Hotel"]
.
API'lerde JSONPath
JSONPath'i API'lerde kullanmak, bir JSON yanıtından belirli bilgileri çıkarmak istediğinizde inanılmaz derecede faydalıdır. Birçok programlama dili ve araç, JSONPath'i destekleyen kitaplıklara sahiptir ve bu da onu projelerinize entegre etmeyi kolaylaştırır.
Örneğin, Javascript'te, jsonpath
kitaplığını kullanabilirsiniz:
const jsonpath = require('jsonpath');
// Örnek JSON verileri
const data = {
movies: {
action: [
{ title: "Mad Max: Fury Road", director: "George Miller", year: 2015, rating: 8.1 },
{ title: "John Wick", director: "Chad Stahelski", year: 2014, rating: 7.4 }
],
drama: [
{ title: "The Shawshank Redemption", director: "Frank Darabont", year: 1994, rating: 9.3 },
{ title: "Forrest Gump", director: "Robert Zemeckis", year: 1994, rating: 8.8 }
],
comedy: [
{ title: "The Grand Budapest Hotel", director: "Wes Anderson", year: 2014, rating: 8.1 }
]
}
};
// Tüm drama filmlerinin başlıklarını çıkarma
const titles = jsonpath.query(data, '$.movies.drama[*].title');
console.log(titles); // Output: ["The Shawshank Redemption", "Forrest Gump"]
Benzer şekilde, Python'da, jsonpath-ng
kitaplığını kullanabilirsiniz:
from jsonpath_ng import jsonpath, parse
# Örnek JSON verileri
data = {
"movies": {
"action": [
{"title": "Mad Max: Fury Road", "director": "George Miller", "year": 2015, "rating": 8.1},
{"title": "John Wick", "director": "Chad Stahelski", "year": 2014, "rating": 7.4}
],
"drama": [
{"title": "The Shawshank Redemption", "director": "Frank Darabont", "year": 1994, "rating": 9.3},
{"title": "Forrest Gump", "director": "Robert Zemeckis", "year": 1994, "rating": 8.8}
],
"comedy": [
{"title": "The Grand Budapest Hotel", "director": "Wes Anderson", "year": 2014, "rating": 8.1}
]
}
}
# Tüm drama filmlerinin başlıklarını çıkarma
jsonpath_expr = parse('$.movies.drama[*].title')
titles = [match.value for match in jsonpath_expr.find(data)]
print(titles) # Output: ["The Shawshank Redemption", "Forrest Gump"]
Apidog'da JSONPath Kullanma

Apidog, API'lerle çalışma sürecini basitleştirmek için tasarlanmış çok yönlü bir araçtır ve JSONPath'i kutudan çıkar çıkmaz destekler.

Apidog'un JSONPath'in gücünden etkili bir şekilde yararlanmanıza nasıl yardımcı olabileceği aşağıda açıklanmıştır:
İlk olarak, API'lerinize istek göndermeniz ve yanıtları doğrudan Apidog ile görüntülemeniz gerekir. Ardından, yanıttan tüm aksiyon filmlerinin başlıklarını çıkarmak için bir JSONPath sorgusu uygulamak için sağlanan arayüzü kullanabilirsiniz.

Yukarıdaki ekran görüntüsünden, (1) sunucumuza bir GET
isteği gönderdiğimizi göreceksiniz - yukarıda yanıt olarak aldığımız JSON verilerini kullanarak basit bir express sunucusu oluşturdum. Ardından Post İşlemciler sekmesine (2) geçtim ve yeni bir işlem ekledim - Değişken Çıkar
(3).
Değişken Çıkar
'a tıkladığınızda, aşağıdaki sayfa gösterilecektir;

İsterseniz bir değişken adı (1) ayarlayabilirsiniz. Değişkenler, farklı API'leri izlemek veya oluşturmak istiyorsanız ve genel yapılandırmayı yönetmek için tek bir yere ihtiyacınız varsa kullanışlıdır. Buradaki değişkenler .env
dosyaları gibidir.
Diğer adım, filtrelemek istediğiniz JSONPath'i yazmaktır (2). Bu durumda, JSON'umuzun aksiyon dizisindeki filmlerin başlıklarını almak istiyoruz. Şu anda yolu yazdıktan sonra, aşağıdaki gibi sorgunun yanıt sayfasını açmak için ok düğmesine (3) tıklayın.

Yukarıdaki yanıttan görebileceğiniz gibi, Apidog aksiyon dizisindeki filmlerin başlıklarını filtreledi ve bize gösterdi.
Bunu denemek isterseniz, Apidog'u indirdiğinizden ve kurduğunuzdan ve onunla ilk isteğinizi gönderdiğinizden emin olun.
Sonuç
JSONPath, API'lerdeki JSON yanıtlarından veri almak ve gezinmek için paha biçilmez bir araçtır. Karmaşık JSON yapılarıyla çalışma sürecini basitleştirerek geliştirme iş akışınızı daha verimli hale getirir. JSONPath'i Apidog gibi araçlarla entegre ederek, tam olarak ihtiyacınız olan verileri kolayca filtreleyebilir ve alabilir, API test ve hata ayıklama süreçlerinizi geliştirebilirsiniz. İster film başlıkları çıkarıyor, ister belirli kayıtları filtreliyor veya yanıtları doğruluyor olun, JSONPath, JSON verilerini işlemek için net ve öz bir yol sunar. Bir sonraki projenizde deneyin ve getirdiği kolaylaştırılmış basitliği deneyimleyin.
```