26 पॉइंट द्वारा GN⁺ 2024-05-05 | 2 टिप्पणियां | WhatsApp पर शेयर करें
  • JSON Path एक query language है जिसका उपयोग JSON दस्तावेज़ों से data निकालने के लिए किया जा सकता है
  • चूंकि OpenAPI एक JSON या YAML दस्तावेज़ होता है, इसलिए JSON Path का उपयोग करके OpenAPI में कई तरह के काम किए जा सकते हैं
    • OpenAPI Overlay का उपयोग करके दस्तावेज़ में अतिरिक्त सामग्री, code sample आदि patch किए जा सकते हैं
    • Spectral में इसका उपयोग कर advanced rules लिखे जा सकते हैं
    • AWS Step Functions में भी इसका उपयोग संभव है
  • JSON Path कैसे काम करता है
    • यह JSON data structure को navigate और filter करके उसके खास हिस्से निकालता है
    • इसका syntax XPath जैसा है (जो XML में उपयोग होता है)
    • syntax उदाहरण: $.store.book[?@.price < 10].title
  • OpenAPI में उपयोग
    • jpp कमांड का उपयोग करके OpenAPI दस्तावेज़ को query किया जा सकता है और उसके खास हिस्से निकाले जा सकते हैं
    • Overlay का उपयोग OpenAPI दस्तावेज़ को संशोधित करने या उसमें जानकारी जोड़ने के लिए किया जा सकता है
      • description अपडेट करना, contact जानकारी जोड़ना आदि
      • server सूची से development/staging server हटाकर सिर्फ production रखना
      • नए sandbox server की जानकारी जोड़ना आदि
  • JSON Path के बारे में और सीखें
    • 2024 में IETF ने इसे standard के रूप में अपनाया (RFC 9535)
    • पहले इसके कई अलग-अलग variants मौजूद थे, लेकिन standardization के बाद एकरूपता की दिशा में बढ़त हो रही है
    • RFC 9535 syntax का पालन करना बेहतर है

GN⁺ की राय

  • JSON Path का उपयोग लगातार अधिक जगहों पर हो रहा है, इसलिए इसे जानना उपयोगी है। खासकर OpenAPI के साथ काम करने वाले developers या technical writers के लिए यह एक ज़रूरी skill बन सकता है.
  • अभी JSON Path का syntax पूरी तरह एक जैसा नहीं है, इसलिए थोड़ी उलझन हो सकती है, लेकिन RFC 9535 को आधार मानना उचित लगता है। उम्मीद है कि आगे संबंधित tools भी इसी standard का पालन करेंगे।
  • OpenAPI Overlay या Spectral जैसे development workflow के tools में इसके उपयोग के कई क्षेत्र दिखते हैं। यह केवल data extraction ही नहीं, बल्कि documentation enhancement, validation और cleanup में भी बहुत उपयोगी हो सकता है।
  • हालांकि इसका syntax थोड़ा जटिल है और JSON/YAML की समझ भी चाहिए, इसलिए entry barrier मौजूद है। सरल तरीकों से शुरुआत करके धीरे-धीरे advanced features सीखना बेहतर रहेगा।
  • jq या yq जैसे command-line tools के साथ अभ्यास करना अच्छा रहेगा। Bump.sh जैसे integrated tools का उपयोग भी productivity बढ़ाने में मदद कर सकता है।

2 टिप्पणियां

 
greenhead 2024-05-05

धन्यवाद

 
GN⁺ 2024-05-05
Hacker News राय
  • JSONata(https://jsonata.org) JSON को मैनिपुलेट करने के लिए बेहतरीन टूल्स में से एक है, जो JsonPath सिंटैक्स का उपयोग करता है और node selection के अलावा arithmetic, comparison, sorting, grouping, date manipulation, aggregation जैसी helper functions भी देता है। यह JS में लिखा गया है, इसलिए Node या browser में इस्तेमाल किया जा सकता है, और इसका Python wrapper(https://pypi.org/project/pyjsonata/) भी है.

  • json_profile(https://github.com/tylerneylon/json_profile) एक ऐसा टूल है जो नए JSON फ़ाइलों के मुख्य schema और data locations को जल्दी समझने में मदद करता है, खासकर जब list के peer elements की संरचना एक जैसी हो। यह फ़ाइल structure को सीखता है, सबसे heavy aggregate paths को प्रिंट करता है, और path के हिसाब से size hints देता है.

  • espath(https://github.com/tomhodgins/espath) एक लाइब्रेरी है जो XPath और CSS selectors का उपयोग करके JSON में data को filter और find करती है। यह JavaScript objects को XML DOM में बदलकर query चलाती है और फिर वापस object में बदल देती है, या original object register को बनाए रखते हुए original objects को खोजती है.

  • इस पर सवाल उठाया गया कि JSON जिस data structure को दर्शाता है उसका कोई सामान्य नाम है या नहीं, और JSON, YAML, Python dictionaries, TOML जैसी मिलती-जुलती संरचनाओं पर काम करने वाली path language की ज़रूरत का भी उल्लेख है.

  • SQLite अपने core database में JSON Path का एक subset शामिल करता है, जो json_extract() जैसी functions में इस्तेमाल होता है। संबंधित विस्तृत नोट: https://til.simonwillison.net/sqlite/json-extract-path

  • Insomnia और Bruno में JSON Path का उपयोग करके responses को filter करने की सुविधा है.

  • PostgreSQL के jsonpath support का उपयोग DB rows के लिए custom filtering rules बनाने में किया गया है.

  • जैसे XPATH injection व्यापक रूप से इस्तेमाल हुआ था, वैसे ही JSON path injection attacks भी अपरिहार्य माने जा रहे हैं। (https://owasp.org/www-community/attacks/XPATH_Injection देखें)

  • यह अजीब है कि jq जैसे समान टूल्स का कोई उल्लेख नहीं है.

  • अफ़सोस की बात है कि JSON path के बहुत ज़्यादा सिंटैक्स हैं। jq, JSON path, AWS CLI, MySQL आदि सब अलग-अलग सिंटैक्स इस्तेमाल करते हैं, इसलिए muscle memory बनाना मुश्किल है.