26 puan yazan GN⁺ 2024-05-05 | 2 yorum | WhatsApp'ta paylaş
  • JSON Path, JSON belgelerinden veri çıkarmak için kullanılabilen bir sorgu dilidir
  • OpenAPI bir JSON veya YAML belgesi olduğundan, JSON Path kullanılarak OpenAPI üzerinde çeşitli işlemler yapılabilir
    • OpenAPI Overlay kullanarak belgeye ek içerik, kod örnekleri vb. yamalanabilir
    • Spectral içinde kullanılarak gelişmiş kurallar yazılabilir
    • AWS Step Functions içinde de kullanılabilir
  • JSON Path'in çalışma şekli
    • JSON veri yapısını gezerek filtreler ve belirli bölümleri çıkarır
    • XPath'e benzer bir sözdizimine sahiptir (XML'de kullanılır)
    • Sözdizimi örneği: $.store.book[?@.price < 10].title
  • OpenAPI'deki kullanım alanları
    • jpp komutu kullanılarak OpenAPI belgeleri sorgulanabilir ve belirli bölümler çıkarılabilir
    • Overlay kullanılarak OpenAPI belgesi değiştirilebilir veya bilgi eklenebilir
      • Açıklamaları güncellemek, iletişim bilgisi eklemek vb.
      • Sunucu listesinden geliştirme/staging sunucularını kaldırıp yalnızca prodüksiyonu bırakmak
      • Yeni sandbox sunucusu bilgisi eklemek vb.
  • JSON Path hakkında daha fazla bilgi edinmek
    • 2024'te IETF tarafından standart olarak kabul edildi (RFC 9535)
    • Daha önce çeşitli türevleri vardı, ancak standartlaşmayla birlikte birleşme eğilimi var
    • RFC 9535 sözdizimini izlemek iyi olur

GN⁺ görüşü

  • JSON Path giderek daha fazla yerde kullanılıyor; bu yüzden bilinmesi faydalı bir teknoloji. Özellikle OpenAPI ile çalışan geliştiriciler ve teknik yazarlar için vazgeçilmez bir beceri haline gelebilir.
  • JSON Path sözdizimi henüz tamamen yeknesak olmadığı için bir miktar kafa karışıklığı var, ancak RFC 9535'i temel almak en doğru yaklaşım gibi görünüyor. İleride ilgili araçların da bu standardı izlemesi bekleniyor.
  • OpenAPI Overlay veya Spectral gibi geliştirme sürecinde kullanılabilecek alanlar oldukça çeşitli görünüyor. Yalnızca veri çıkarma değil, belgeyi tamamlama, doğrulama ve düzenleme için de yüksek bir potansiyele sahip.
  • Ancak sözdizimi biraz karmaşık ve JSON/YAML'e aşina olmayı gerektiriyor; bu nedenle giriş eşiği var. Basit yöntemlerle başlayıp zamanla ileri özellikleri öğrenmek iyi olacaktır.
  • jq veya yq gibi komut satırı araçlarıyla pratik yapmak faydalı olabilir. Bump.sh gibi entegre araçlar kullanmak da üretkenliğe katkı sağlayacaktır.

2 yorum

 
greenhead 2024-05-05

Teşekkür ederim

 
GN⁺ 2024-05-05
Hacker News görüşleri
  • JSONata(https://jsonata.org), JSON işleme için en iyi araçlardan biri; JsonPath sözdizimini kullanıyor ve düğüm seçiminin yanı sıra aritmetik, karşılaştırma, sıralama, gruplama, tarih işleme ve toplulaştırma gibi yardımcı fonksiyonlar sunuyor. JS ile yazılmış, Node veya tarayıcıda kullanılabiliyor; ayrıca bir Python sarmalayıcısı da var (https://pypi.org/project/pyjsonata/).

  • json_profile(https://github.com/tylerneylon/json_profile), yeni bir JSON dosyasının temel şemasını ve verilerin nerede bulunduğunu hızlıca anlamaya yardımcı olan bir araç; listedeki eş öğeler aynı yapıya sahip olduğunda özellikle faydalı. Dosya yapısını öğreniyor, en ağır toplulaştırma yollarını yazdırıyor ve yol bazında boyut ipuçları veriyor.

  • espath(https://github.com/tomhodgins/espath), JSON verilerini XPath ve CSS seçicileriyle filtrelemek ve bulmak için bir kütüphane. JavaScript nesnelerini XML DOM'a dönüştürüp sorguları çalıştırdıktan sonra tekrar nesneye çevirerek ya da özgün nesne kayıtlarını koruyup özgün nesneleri arayarak çalışıyor.

  • JSON'un temsil ettiği veri yapısının genel bir adı olup olmadığına dair bir soru ve JSON, YAML, Python sözlüğü, TOML gibi benzer yapılarda çalışacak bir yol diline ihtiyaç olduğuna dair bir yorum var.

  • SQLite, json_extract() gibi fonksiyonlarda kullanılan JSON Path'in bir alt kümesini çekirdek veritabanına dahil ediyor. İlgili ayrıntılı not: https://til.simonwillison.net/sqlite/json-extract-path

  • Insomnia ve Bruno, yanıtları filtrelemek için JSON Path kullanma özelliğine sahip.

  • PostgreSQL'in jsonpath desteği, veritabanı satırları için kullanıcı tanımlı filtreleme kuralları oluşturmakta kullanılmış.

  • XPATH injection yaygınlaştığı gibi, JSON path injection saldırılarının da kaçınılmaz olacağı öngörülüyor. (Bkz. https://owasp.org/www-community/attacks/XPATH_Injection)

  • jq gibi benzer araçlardan hiç bahsedilmemesi tuhaf bulunuyor.

  • Çok fazla JSON yol sözdizimi olmasından yakınılıyor. jq, JSON path, AWS CLI, MySQL vb. her biri farklı sözdizimi kullandığı için kas hafızası geliştirmek zor.