JSON पथ निकालने वाला

JSON पेस्ट करें और मान निकालने के लिए $.store.book[0].title जैसी पथ अभिव्यक्ति दर्ज करें।

परिणाम

JSON और पथ दर्ज करें, फिर निकालें पर क्लिक करें।

यह कैसे काम करता है

  1. अपना JSON पेस्ट करें: इनपुट फ़ील्ड में JSON ऑब्जेक्ट या ऐरे दर्ज करें।
  2. एक JSONPath अभिव्यक्ति दर्ज करें: $.store.book[*].author या $.users[?(@.age > 18)] जैसा पथ टाइप करें।
  3. निकाले गए परिणाम देखें: मेल खाने वाले मान तुरंत आउटपुट पैनल में दिखाई देते हैं। परिणाम कॉपी करें।

JSONPath एक्सट्रैक्टर क्यों इस्तेमाल करें?

जब आप जटिल API प्रतिक्रियाओं या गहराई से नेस्टेड JSON के साथ काम करते हैं, तो विशिष्ट मान हाथ से निकालना धीमा है।

विशेषताएँ

अक्सर पूछे जाने वाले प्रश्न

JSONPath क्या है?

JSONPath JSON दस्तावेज़ों के लिए क्वेरी भाषा है, XML के लिए XPath के समान। $.users[*].name जैसा पथ name फ़ील्ड चुनता है।

किसी शर्त द्वारा ऐरे के तत्वों को कैसे फ़िल्टर करें?

फ़िल्टर अभिव्यक्ति का उपयोग करें: $.items[?(@.price < 50)] 50 से कम मूल्य वाले सभी आइटम लौटाता है। @ प्रतीक वर्तमान तत्व को संदर्भित करता है।

क्या यह पुनरावर्ती खोज का समर्थन करता है?

हाँ। .. ऑपरेटर सभी स्तरों पर पुनरावर्ती खोज करता है। उदाहरण: $..name सभी name कुंजियाँ खोजता है जहाँ भी वे हों।

एक ब्लॉग पोस्ट से RFC 9535 तक: JSONPath मानक की 17 साल की सड़क

Stefan Gössner ने फरवरी 2007 में एक एकल ब्लॉग पोस्ट में JSONPath का प्रस्ताव दिया, XPath विचार को JSON के लिए अनुकूलित करते हुए। उन्होंने एक संदर्भ JavaScript कार्यान्वयन प्रकाशित किया, सिंटैक्स का स्केच किया ($ रूट, डॉट और ब्रैकेट चाइल्ड ऑपरेटर, पुनरावर्ती अवतरण के लिए .., वाइल्डकार्ड के लिए *, ऐरे स्लाइसिंग के लिए [start:end:step], फ़िल्टर अभिव्यक्तियों के लिए [?(...)]) और व्यापक पारिस्थितिकी तंत्र इसके साथ चला। कार्यान्वयन फैल गए: JavaScript के लिए jsonpath, Java के लिए JsonPath, jq (Stephen Dolan, 2012) जो JSONPath-निकटवर्ती है लेकिन अपनी अलग चीज़ है, Python के लिए jsonpath-ng, JMESPath (AWS, 2014) एक सख्त प्रतिद्वंद्वी के रूप में। समस्या: हर कार्यान्वयन बहक गया। फ़िल्टर सिंटैक्स, पुनरावर्तन शब्दार्थ, regex मिलान, रूट पहचानकर्ता, सभी पुस्तकालयों में सूक्ष्म रूप से भिन्न। Carsten Bormann et al. द्वारा 2023 तुलनात्मक अध्ययन ने एक ही इनपुट के विरुद्ध 41 विभिन्न JSONPath कार्यान्वयनों का परीक्षण किया और एक ही अभिव्यक्ति के लिए 41 अलग-अलग परिणाम सेट प्राप्त किए। IETF JSONPath वर्किंग ग्रुप ने 2020 में इसे ठीक करने के लिए बुलाई। RFC 9535 «JSONPath: Query Expressions for JSON» फरवरी 2024 में प्रकाशित हुआ, JSONPath के लिए पहला औपचारिक मानक बन गया, Gössner की मूल पोस्ट के 17 साल बाद। RFC 9535 सिंटैक्स को कोडिफाई करता है, एक सामान्यीकृत आउटपुट प्रारूप परिभाषित करता है, स्ट्रिंग तुलनाओं के लिए यूनिकोड सामान्यीकरण की आवश्यकता रखता है, और एक अनुरूपता परीक्षण सूट जोड़ता है।

JSONPath सिंटैक्स चीट शीट

वे सात ऑपरेटर जो अधिकांश वास्तविक दुनिया के प्रश्नों को कवर करते हैं:

जहाँ आप वास्तव में JSONPath तक पहुँचते हैं

गलतियाँ जो काटती हैं

JSONPath vs jq vs JMESPath vs JSON Pointer

अधिक अक्सर पूछे जाने वाले प्रश्न

क्या JSONPath XPath के समान है?

इससे प्रेरित, समान नहीं। XPath को XML के लिए W3C द्वारा 1999 में अंतिम रूप दिया गया, JSONPath को Gössner ने 2007 में स्केच किया, JSON के लिए वही विचार लाने के लिए। सबसे बड़े अंतर: JSONPath / के बजाय . और [] का उपयोग करता है, JSONPath में XML नेमस्पेस या विशेषताओं की कोई अवधारणा नहीं है, JSONPath बहुत बाद में मानकीकृत हुआ (2024 बनाम 1999), इसलिए वर्षों तक यह कई असंगत कार्यान्वयनों के साथ एक डी-फैक्टो सिंटैक्स था।

एक ही JSONPath अलग-अलग टूल्स में अलग-अलग परिणाम क्यों देता है?

क्योंकि JSONPath को RFC 9535 (फरवरी 2024) तक मानकीकृत नहीं किया गया था। उससे पहले, हर कार्यान्वयन फ़िल्टर सिंटैक्स, regex समर्थन, रूट पहचानकर्ता, एस्केप नियम, और एज केस (खाली ऐरे, गुम कुंजी, फ़िल्टर में टाइप कोएर्शन) के बारे में अपने स्वयं के विकल्प बनाता था। 2023 के IETF वर्किंग-ग्रुप अध्ययन ने एक ही इनपुट पर 41 कार्यान्वयनों का परीक्षण किया और 41 अलग-अलग परिणाम सेट प्राप्त किए। RFC 9535 इसे नई और अपडेट की गई लाइब्रेरीज़ के लिए ठीक करता है; पुरानी लाइब्रेरीज़ तब तक विचलित होंगी जब तक वे माइग्रेट नहीं हो जातीं। हमेशा जाँचें कि क्या आपकी लाइब्रेरी «RFC 9535 अनुरूपता» का दावा करती है।

क्या मैं JSONPath के साथ JSON को संशोधित कर सकता हूँ, या केवल पढ़ सकता हूँ?

RFC 9535 JSONPath को सख्ती से एक क्वेरी भाषा के रूप में परिभाषित करता है: यह एक दस्तावेज़ से मान लौटाता है, यह म्यूट नहीं करता है। JSON को संशोधित करने के लिए, JSON Patch (RFC 6902) का उपयोग करें, जो JSON Pointer पथ और add/remove/replace/copy/move/test ऑपरेशन का उपयोग करता है। कुछ लाइब्रेरीज़ दोनों को जोड़ती हैं (जैसे JavaScript में jsonpath-plus में apply() म्यूटेशन एक्सटेंशन है) लेकिन यह मानक JSONPath नहीं है।

क्या JSONPath फ़िल्टर में रेगुलर एक्सप्रेशन का समर्थन करता है?

RFC 9535 ने दो regex फ़ंक्शन जोड़े: match(node, regex) पूरे स्ट्रिंग से मिलता है, search(node, regex) किसी भी सबस्ट्रिंग से मिलता है। उदाहरण: $.book[?(match(@.isbn, "^978-"))]। regex फ्लेवर I-Regexp है (RFC 9485, XML Schema regex का एक प्रोफ़ाइल), PCRE या JavaScript regex नहीं। पुरानी लाइब्रेरीज़ अपनी होस्ट भाषा के regex फ्लेवर का उपयोग करती थीं, जो regex क्वेरीज़ को विशेष रूप से गैर-पोर्टेबल बनाता है।

जब मैं इस टूल का उपयोग करता हूँ तो क्या मेरा JSON कहीं भेजा जाता है?

नहीं। पथ मूल्यांकन पूरी तरह से आपके ब्राउज़र के JavaScript इंजन में चलता है। DevTools में नेटवर्क टैब खोलें और एक क्वेरी चलाएं, आप मूल्यांकन के दौरान शून्य आउटबाउंड अनुरोध देखेंगे। रहस्यों के साथ API प्रतिक्रियाओं, PII के साथ डेटाबेस डंप, या क्रेडेंशियल्स वाले कॉन्फ़िगरेशन फ़ाइलों के लिए सुरक्षित।

संबंधित टूल

JSON Tree दर्शक निःशुल्क JSON फॉर्मेटर और वैलिडेटर JSON से CSV JSON तुलना करें