ToolDeck

JSONPath Tester

JSON डेटा पर JSONPath एक्सप्रेशन टेस्ट करें और matches देखें

उदाहरण देखें

JSON इनपुट

परिणाम

स्थानीय रूप से चलता है · सीक्रेट पेस्ट करना सुरक्षित है
परिणाम यहाँ दिखेंगे…

JSONPath क्या है?

JSONPath एक query language है जो JSON दस्तावेज़ों से मान निकालने के लिए उपयोग की जाती है। इसे मूल रूप से 2007 में Stefan Goessner ने XML के लिए XPath के समकक्ष के रूप में प्रस्तावित किया था। JSONPath आपको $.store.book[*].author जैसे एक्सप्रेशन लिखने देता है जो लूप या मैन्युअल traversal कोड लिखे बिना book array के अंदर सभी author फ़ील्ड चुनता है। इस भाषा को फरवरी 2024 में IETF द्वारा RFC 9535 के रूप में मानकीकृत किया गया।

एक JSONPath एक्सप्रेशन हमेशा $ से शुरू होता है जो document का root node दर्शाता है। वहाँ से आप selectors को जोड़ते हैं: object keys के लिए dot notation, array indices के लिए bracket notation, सभी children के लिए wildcards, और nesting के हर स्तर पर खोज के लिए recursive descent operator (..)। [?(@.price < 10)] जैसे filter expressions आपको उनकी values के आधार पर conditions लगाकर elements चुनने देते हैं।

JSONPath का उपयोग Postman जैसे API testing tools, Datadog और Splunk जैसे observability platforms, Apache NiFi जैसे workflow engines, और JavaScript, Python, Go, Java, और C# में programming libraries में किया जाता है। कोड या config files में एम्बेड करने से पहले अपने एक्सप्रेशन को real data पर टेस्ट करने से silent failures से बचा जा सकता है जब JSON structure आपकी assumptions से मेल नहीं खाती।

इस JSONPath Tester का उपयोग क्यों करें?

JSONPath एक्सप्रेशन हाथ से लिखना त्रुटि-प्रवण है। एक गुम dot, गलत bracket type, या गलत filter syntax खाली परिणाम बिना किसी error message के दे सकता है। यह tool आपको तुरंत visual feedback देता है कि आपका एक्सप्रेशन क्या match करता है।

तुरंत परिणाम
JSON पेस्ट करें, एक्सप्रेशन टाइप करें, और real time में matching values को अपडेट होते देखें। अपनी query जाँचने के लिए कोई script चलाने या page reload करने की ज़रूरत नहीं।
🔒
Privacy-First
सभी evaluation आपके browser में होता है। आपका JSON डेटा कभी भी आपकी machine नहीं छोड़ता, इसलिए आप production API responses या credentials युक्त config files के विरुद्ध एक्सप्रेशन सुरक्षित रूप से टेस्ट कर सकते हैं।
📋
परिणाम सीधे कॉपी करें
एक क्लिक से matched output को JSON के रूप में कॉपी करें। इसे test assertions, documentation, या API response examples में बिना reformatting के पेस्ट करें।
🛠️
कोई सेटअप आवश्यक नहीं
कोई npm packages इंस्टॉल करने या Python virtualenvs बनाने की ज़रूरत नहीं। पेज खोलें, अपना डेटा पेस्ट करें, और querying शुरू करें। किसी भी browser में काम करता है।

JSONPath के उपयोग के मामले

Frontend Development
API responses से सटीक nested values निकालें जिनकी आपको React state या Vue computed properties में जरूरत है। पहले real API payload के विरुद्ध अपने path एक्सप्रेशन टेस्ट करें।
Backend API Testing
Postman और REST-assured response bodies assert करने के लिए JSONPath का उपयोग करते हैं। यहाँ अपने assertion एक्सप्रेशन build और verify करें, फिर test scripts में कॉपी करें, जिससे debug cycles कम हों।
DevOps Configuration
Kubernetes custom resource definitions, AWS Step Functions, और Terraform data sources JSON outputs से values निकालने के लिए JSONPath एक्सप्रेशन accept करते हैं। deploy करने से पहले अपना path validate करें।
QA Test Automation
Contract tests और integration tests के लिए JSONPath-based assertions लिखें। Verify करें कि जब JSON structure में optional या nullable fields हों तो आपके एक्सप्रेशन expected values को सही तरह से match करते हैं।
Data Pipeline Extraction
Apache NiFi, Logstash, और custom ETL scripts semi-structured log data और event streams से fields निकालने के लिए JSONPath का उपयोग करते हैं। pipeline deployment से पहले sample payloads के विरुद्ध एक्सप्रेशन टेस्ट करें।
सीखना और प्रयोग
JSONPath में नए students और developers local environment के बिना wildcards, recursive descent, और filters कैसे काम करते हैं यह समझने के लिए sample JSON पर अलग-अलग एक्सप्रेशन आज़मा सकते हैं।

JSONPath Syntax संदर्भ

RFC 9535 मानक JSONPath syntax को परिभाषित करता है। नीचे की तालिका उन operators को cover करती है जिनका उपयोग आप अधिकांश queries में करेंगे। सभी एक्सप्रेशन $ (root node) से शुरू होते हैं और document structure को navigate करने के लिए एक या अधिक selectors जोड़ते हैं।

Operatorविवरणउदाहरण
$Root element$.store
.keyChild property$.store.book
[n]Array index (zero-based)$.store.book[0]
[*]All elements in array/object$.store.book[*]
..Recursive descent$..author
[start:end]Array slice$.store.book[0:2]
[?()]Filter expression$.store.book[?(@.price<10)]
@Current node (inside filter)$.store.book[?(@.isbn)]

JSONPath बनाम jq बनाम XPath

JSONPath, jq, और XPath अलग-अलग formats और use cases के लिए एक ही समस्या (structured data query करना) हल करते हैं। JSONPath JSON को target करता है और अधिकांश languages में library के रूप में उपलब्ध है। jq एक standalone CLI tool है जिसकी अपनी Turing-complete filter language है। XPath XML पर काम करता है और W3C specification stack का हिस्सा है।

विशेषताJSONPathjqXPath
Data formatJSONJSONXML
पहला element access करना$.store.book[0].store.book[0]/store/book[1]
Recursive search$..price.. | .price?//price
Filter expression[?(@.price<10)]select(.price < 10)[price<10]
SpecificationRFC 9535stedolan.github.ioW3C XPath 3.1

Code उदाहरण

लोकप्रिय languages और tools में JSONPath एक्सप्रेशन evaluate करने का तरीका। तुलना के लिए प्रत्येक उदाहरण एक ही bookstore JSON structure का उपयोग करता है।

JavaScript (jsonpath-plus)
import { JSONPath } from 'jsonpath-plus';

const data = {
  store: {
    book: [
      { title: 'Moby Dick', price: 8.99 },
      { title: 'The Great Gatsby', price: 12.99 }
    ]
  }
};

// Get all book titles
JSONPath({ path: '$.store.book[*].title', json: data });
// → ['Moby Dick', 'The Great Gatsby']

// Recursive descent — find every price in the document
JSONPath({ path: '$..price', json: data });
// → [8.99, 12.99]

// Filter — books under $10
JSONPath({ path: '$.store.book[?(@.price < 10)]', json: data });
// → [{ title: 'Moby Dick', price: 8.99 }]
Python (jsonpath-ng)
from jsonpath_ng.ext import parse
import json

data = {
    "store": {
        "book": [
            {"title": "Moby Dick", "price": 8.99},
            {"title": "The Great Gatsby", "price": 12.99}
        ]
    }
}

# Get all book titles
expr = parse("$.store.book[*].title")
titles = [match.value for match in expr.find(data)]
# → ['Moby Dick', 'The Great Gatsby']

# Recursive descent — all prices
expr = parse("$..price")
prices = [match.value for match in expr.find(data)]
# → [8.99, 12.99]

# Filter — books under $10
expr = parse("$.store.book[?price < 10]")
cheap = [match.value for match in expr.find(data)]
# → [{"title": "Moby Dick", "price": 8.99}]
Go (ohler55/ojg)
package main

import (
    "fmt"
    "github.com/ohler55/ojg/jp"
    "github.com/ohler55/ojg/oj"
)

func main() {
    src := `{
        "store": {
            "book": [
                {"title": "Moby Dick", "price": 8.99},
                {"title": "The Great Gatsby", "price": 12.99}
            ]
        }
    }`

    obj, _ := oj.ParseString(src)

    // Get all book titles
    expr, _ := jp.ParseString("$.store.book[*].title")
    results := expr.Get(obj)
    fmt.Println(results)
    // → [Moby Dick The Great Gatsby]

    // Recursive descent — all prices
    expr2, _ := jp.ParseString("$..price")
    fmt.Println(expr2.Get(obj))
    // → [8.99 12.99]
}
CLI (jq alternative syntax)
# jq uses its own syntax, not JSONPath, but solves the same problem.
# Mapping common JSONPath patterns to jq:

# $.store.book[*].title → get all titles
echo '{"store":{"book":[{"title":"Moby Dick"},{"title":"Gatsby"}]}}' | \
  jq '.store.book[].title'
# → "Moby Dick"
# → "Gatsby"

# $..price → recursive descent for "price" keys
echo '{"a":{"price":1},"b":{"price":2}}' | \
  jq '.. | .price? // empty'
# → 1
# → 2

# Filter: books where price < 10
echo '{"store":{"book":[{"title":"A","price":8},{"title":"B","price":12}]}}' | \
  jq '.store.book[] | select(.price < 10)'
# → {"title":"A","price":8}

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

JSONPath और jq में क्या अंतर है?
JSONPath एक query language है जिसे applications में library के रूप में embed करने के लिए design किया गया है। यह path expressions का उपयोग करके JSON document से matching values लौटाता है। jq एक standalone command-line tool है जिसमें JSON transform करने के लिए एक पूर्ण programming language है, जिसमें conditionals, functions, और string interpolation शामिल हैं। JSONPath का उपयोग तब करें जब आपको code या Postman जैसे tool में query embed करनी हो। jq का उपयोग ad-hoc command-line data transformation के लिए करें।
क्या JSONPath एक आधिकारिक मानक है?
हाँ। IETF ने फरवरी 2024 में RFC 9535 ("JSONPath: Query Expressions for JSON") प्रकाशित किया। इससे पहले, JSONPath 2007 से Stefan Goessner की एक informal specification के रूप में ही था, जिससे implementations के बीच inconsistencies थीं। RFC 9535 interoperability के लिए syntax, semantics, और एक normalization format को परिभाषित करता है।
JSONPath में recursive descent (..) कैसे काम करता है?
Recursive descent operator (..) JSON document के हर स्तर पर उस key को खोजता है जो उसके बाद आती है। उदाहरण के लिए, $..price सभी values लौटाता है जो key "price" से जुड़ी हैं, चाहे वे कितनी भी गहराई पर nested हों। यह एक depth-first traversal के समान है जो matching nodes collect करता है। ध्यान रखें कि बड़े documents पर recursive descent कई परिणाम दे सकता है और direct path से धीमा हो सकता है।
क्या JSONPath JSON डेटा को modify कर सकता है?
नहीं। JSONPath एक read-only query language है। यह values select और return करता है लेकिन nodes को insert, update, या delete नहीं कर सकता। JSONPath एक्सप्रेशन के आधार पर JSON modify करने के लिए, query करने के बाद आपको अपनी programming language के JSON manipulation functions का उपयोग करना होगा। Python में jsonpath-ng जैसी कुछ libraries match objects पर set() method प्रदान करती हैं, लेकिन यह एक library extension है, JSONPath specification का हिस्सा नहीं।
JSONPath filter expressions में @ symbol का क्या अर्थ है?
@ symbol filter expression में evaluate हो रहे current node को refer करता है। $.store.book[?(@.price < 10)] में, filter book array के प्रत्येक element पर iterate करता है, और @ प्रत्येक book object को represent करता है। @.price current book के price field को access करता है। @ के बिना, filter यह नहीं जान पाएगा कि किस node की properties जाँचनी हैं।
JSONPath में special characters या spaces वाले keys को कैसे handle करें?
Quotes के साथ bracket notation का उपयोग करें: $['store']['book title']। Bracket notation किसी भी key के लिए काम करता है, जिसमें dots, spaces, या Unicode characters वाले keys शामिल हैं। Dot notation ($.store.key) केवल उन keys के लिए काम करता है जो valid identifiers हैं (letters, digits, underscores)। RFC 9535 implementations को single-quoted और double-quoted दोनों bracket notation को support करने की आवश्यकता है।
मेरा JSONPath एक्सप्रेशन खाली परिणाम क्यों देता है?
सबसे सामान्य कारण हैं: key name में typo (JSONPath case-sensitive है), special characters वाली key के लिए dot notation का उपयोग, शुरुआत में $ root symbol गायब होना, या किसी value को array मानना जबकि वह single object है। अपना JSON एक tester tool में पेस्ट करें और पहले सरल sub-expressions (जैसे $.store) आज़माएँ ताकि अधिक selectors जोड़ने से पहले अपने path के प्रत्येक segment को verify कर सकें।