JSON क्या है?

JSON (JavaScript Object Notation) स्ट्रक्चर्ड डेटा के आदान-प्रदान के लिए एक हल्का टेक्स्ट फ़ॉर्मेट है। यह डेटा को नेस्टेड ऑब्जेक्ट और वैल्यू की ऐरे के रूप में दिखाता है, इंसान इसे पढ़ सकते हैं, और हर मुख्य प्रोग्रामिंग लैंग्वेज इसे पार्स कर सकती है — इसीलिए लगभग हर वेब API JSON भेजता और लेता है।

यह गाइड बताती है कि वैध JSON लिखने के लिए कौन-सा सिंटैक्स चाहिए, कौन-सी गलतियाँ "Unexpected token" एरर देती हैं, ब्राउज़र में JSON को फ़ॉर्मेट, वैलिडेट और कन्वर्ट कैसे करें, और कब कोई दूसरा फ़ॉर्मेट बेहतर है।

JSON सिंटैक्स: छह वैल्यू टाइप

एक JSON डॉक्यूमेंट एक अकेली वैल्यू होता है। वह वैल्यू आमतौर पर ऑब्जेक्ट या ऐरे होती है, लेकिन स्टैंडर्ड (RFC 8259) टॉप लेवल पर छह में से कोई भी टाइप अनुमति देता है।

  • Object — ब्रेसेस के अंदर key/value जोड़ों का सेट: {"id": 7, "name": "Layla"}। Key डबल कोट्स में स्ट्रिंग होनी चाहिए।
  • Array — ब्रैकेट के अंदर वैल्यू की क्रमबद्ध लिस्ट: ["admin", "editor"]।
  • String — डबल कोट्स में टेक्स्ट, कोट्स, बैकस्लैश और कंट्रोल कैरेक्टर के लिए बैकस्लैश एस्केप के साथ: "line one\nline two"।
  • Number — पूर्णांक या दशमलव, वैकल्पिक एक्सपोनेंट के साथ: 42, -3.5, 1.2e10। आगे शून्य नहीं, hex नहीं, NaN या Infinity नहीं।
  • Boolean — true और false (छोटे अक्षरों में)।
  • null — लिटरल null, यानी "कोई वैल्यू नहीं"।
यह एक डॉक्यूमेंट JSON के सभी छह वैल्यू टाइप इस्तेमाल करता है: टॉप लेवल पर एक Object, जिसके अंदर Object, Array, String, Number, Boolean और null हैं।
भाग 1:{
  "user": भाग 1:{
    "id": भाग 4:7,
    "name": भाग 3:"Layla",
    "active": भाग 5:true
  },
  "roles": भाग 2:[
    भाग 3:"admin",
    भाग 3:"editor"
  ],
  "lastLogin": भाग 6:null,
  "balance": भाग 4:1250.75
}
  1. 1Objectब्रेसेस में key/value जोड़े। बाहरी Object ही टॉप लेवल की अकेली वैल्यू है; user उसके अंदर नेस्टेड Object है
  2. 2Arrayब्रैकेट में वैल्यू की क्रमबद्ध लिस्ट
  3. 3Stringडबल कोट्स में टेक्स्ट। "name" जैसी key भी स्ट्रिंग होती है
  4. 4Numberपूर्णांक या दशमलव, वैकल्पिक एक्सपोनेंट के साथ
  5. 5Booleantrue या false, छोटे अक्षरों में
  6. 6nullलिटरल null, यानी "कोई वैल्यू नहीं"

इसी सेक्शन का सैंपल, हर वैल्यू अलग लाइन में; कोई वैल्यू नहीं बदली।

पाठ संस्करण
{
  "user": { "id": 7, "name": "Layla", "active": true },
  "roles": ["admin", "editor"],
  "lastLogin": null,
  "balance": 1250.75
}

वे नियम जो ज़्यादातर JSON एरर की वजह हैं

JSON JavaScript जैसा दिखता है लेकिन कहीं ज़्यादा सख़्त है। लगभग हर "Unexpected token" या "Unexpected end of JSON input" एरर इनमें से किसी नियम से आता है।

  • Key और स्ट्रिंग में सिर्फ़ डबल कोट्स। 'सिंगल कोट्स' अमान्य हैं।
  • ट्रेलिंग कॉमा नहीं: [1, 2, 3,] और {"a": 1,} एरर हैं।
  • कमेंट नहीं। डॉक्यूमेंट में कहीं भी // या /* */ की अनुमति नहीं।
  • Key कोट्स में होनी चाहिए: {name: "Layla"} JavaScript है, JSON नहीं।
  • नंबर आगे शून्य (007) से शुरू नहीं हो सकते या दशमलव बिंदु (5.) पर ख़त्म नहीं हो सकते।
  • डॉक्यूमेंट में ठीक एक टॉप-लेवल वैल्यू होनी चाहिए — दो ऑब्जेक्ट अगल-बगल वैध JSON नहीं हैं (वह JSON Lines है)।
  • एन्कोडिंग UTF-8 है। फ़ाइल की शुरुआत में byte-order mark कई पार्सर तोड़ देता है।

आज़माएँ: JSON वैलिडेटर आज़माएँ: JSON Lines फ़ॉर्मेटर

JSON को फ़ॉर्मेट (प्रिटी-प्रिंट) कैसे करें

API आमतौर पर JSON मिनिफ़ाइड भेजते हैं — हर स्पेस और लाइन ब्रेक हटाकर — क्योंकि वह छोटा होता है। फ़ॉर्मेटिंग इंडेंटेशन वापस जोड़ती है ताकि स्ट्रक्चर दिखे। टेक्स्ट को फ़ॉर्मेटर में पेस्ट करें, 2-स्पेस, 4-स्पेस या टैब इंडेंटेशन चुनें, और नतीजा कॉपी करें; एक अच्छा फ़ॉर्मेटर किसी भी सिंटैक्स एरर की सटीक लाइन और कॉलम भी बताता है और ऑब्जेक्ट की key सॉर्ट कर सकता है ताकि दो डॉक्यूमेंट की तुलना हो सके।

कोड में, JavaScript में JSON.stringify(value, null, 2), Python में json.dumps(value, indent=2) और कमांड लाइन पर jq . file.json यही काम करते हैं।

आज़माएँ: JSON फ़ॉर्मेटर आज़माएँ: JSON मिनिफ़ायर

JSON को वैलिडेट कैसे करें

वैलिडेशन के दो स्तर हैं। सिंटैक्स वैलिडेशन जाँचता है कि टेक्स्ट सही-बना JSON है — हर ब्रैकेट बंद है और ऊपर का हर नियम माना गया है। स्कीमा वैलिडेशन आगे जाकर स्ट्रक्चर को JSON Schema से जाँचता है: कौन-सी key ज़रूरी हैं, हर वैल्यू का टाइप क्या होना चाहिए, अनुमत रेंज और पैटर्न।

ऐसे पेलोड को डिबग करते समय सिंटैक्स वैलिडेशन इस्तेमाल करें जो पार्स नहीं होता, और स्कीमा वैलिडेशन तब जब आपके पास API कॉन्ट्रैक्ट हो और आप उससे भटकने वाले रिस्पॉन्स पकड़ना चाहें।

आज़माएँ: JSON वैलिडेटर आज़माएँ: JSON Schema वैलिडेटर आज़माएँ: JSON Schema जनरेटर

JSON vs XML vs YAML

JSON ने डिफ़ॉल्ट वेब फ़ॉर्मेट के रूप में XML की जगह ली क्योंकि यह छोटा है, ज़्यादातर लैंग्वेज के डेटा स्ट्रक्चर पर सीधे मैप होता है और उपयोगी होने के लिए किसी स्कीमा की ज़रूरत नहीं। XML एंटरप्राइज़ और SOAP सिस्टम में अब भी आम है और एट्रिब्यूट, नेमस्पेस और कमेंट सपोर्ट करता है जो JSON में नहीं हैं।

YAML JSON का सुपरसेट है जो इंसानों के लिखने के लिए बना है — कॉन्फ़िग फ़ाइल, CI पाइपलाइन, Kubernetes मैनिफ़ेस्ट। इसमें कमेंट चलते हैं और ज़्यादातर पंक्चुएशन नहीं होता, लेकिन व्हाइटस्पेस-संवेदनशीलता इसे मशीन-टू-मशीन एक्सचेंज के लिए ख़राब विकल्प बनाती है। सीधा नियम: API और स्टोरेज के लिए JSON, कॉन्फ़िगरेशन के लिए YAML, और XML तब जब सिस्टम माँगे।

आज़माएँ: JSON से YAML आज़माएँ: JSON से XML आज़माएँ: XML से JSON आज़माएँ: YAML फ़ॉर्मेटर आज़माएँ: XML फ़ॉर्मेटर आज़माएँ: XML वैलिडेटर

JSON को CSV, SQL और दूसरे फ़ॉर्मेट में बदलना

ऑब्जेक्ट की फ़्लैट JSON ऐरे साफ़-साफ़ CSV में बदलती है: हर ऑब्जेक्ट एक रो और हर key एक कॉलम बन जाती है। नेस्टेड ऑब्जेक्ट को पहले फ़्लैटन करना पड़ता है (user.address.city नाम का कॉलम बनता है)। यही शेप SQL INSERT स्टेटमेंट पर भी मैप होती है, जो API डेटा को एनालिसिस के लिए डेटाबेस में लोड करने का सबसे तेज़ तरीका है।

आज़माएँ: JSON से CSV आज़माएँ: CSV से JSON आज़माएँ: JSON से SQL आज़माएँ: JSON फ़्लैटन / अनफ़्लैटन

बड़े JSON डॉक्यूमेंट के साथ काम करना

हज़ारों लाइन वाले डॉक्यूमेंट को पढ़ने का व्यावहारिक तरीका ट्री व्यूअर है: जो नहीं चाहिए उसे कोलैप्स करें, एक बार में एक ब्रांच खोलें और किसी भी वैल्यू का JSONPath कॉपी करें। प्रोग्रामैटिक रूप से खास वैल्यू खोजने या निकालने के लिए $.users[?(@.active)].email जैसे JSONPath एक्सप्रेशन ठीक वही नोड चुनते हैं जो आप चाहते हैं।

आज़माएँ: JSON ट्री व्यूअर आज़माएँ: JSON Path टेस्टर आज़माएँ: JSON डिफ़

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

क्या JSON एक प्रोग्रामिंग लैंग्वेज है?

नहीं। JSON एक डेटा फ़ॉर्मेट है — स्ट्रक्चर्ड वैल्यू को टेक्स्ट के रूप में लिखने का तरीका। इसमें वेरिएबल, फ़ंक्शन या लॉजिक नहीं होते। यह JavaScript ऑब्जेक्ट सिंटैक्स से निकला है लेकिन किसी भी लैंग्वेज से स्वतंत्र है।

JSON का फ़ाइल एक्सटेंशन क्या है?

.json एक्सटेंशन, और MIME टाइप application/json। JSON Lines फ़ाइल (हर लाइन पर एक JSON वैल्यू) .jsonl या .ndjson इस्तेमाल करती हैं।

क्या JSON में कमेंट हो सकते हैं?

स्टैंडर्ड JSON में नहीं। कुछ टूल्स ढीला डायलेक्ट (JSONC, JSON5) स्वीकार करते हैं जिसमें कमेंट और ट्रेलिंग कॉमा चलते हैं, लेकिन API और ज़्यादातर पार्सर उन्हें रिजेक्ट करते हैं।

मेरा JSON "Unexpected token" के साथ फ़ेल क्यों होता है?

पार्सर को ऐसा कैरेक्टर मिला जिसकी उसे उम्मीद नहीं थी — अक्सर ट्रेलिंग कॉमा, सिंगल-कोट स्ट्रिंग, बिना कोट की key या कमेंट। वैलिडेटर सटीक लाइन और कॉलम दिखाता है।

क्या JSON को ऑनलाइन टूल में पेस्ट करना सुरक्षित है?

सिर्फ़ तब जब टूल उसे लोकली प्रोसेस करे। Mutqan के JSON टूल्स पूरी तरह आपके ब्राउज़र में चलते हैं और जो आप पेस्ट करते हैं उसे कभी अपलोड नहीं करते, इसलिए टोकन या निजी डेटा वाले API रिस्पॉन्स आपकी मशीन पर ही रहते हैं।

JSON और JavaScript ऑब्जेक्ट में क्या फ़र्क़ है?

JavaScript ऑब्जेक्ट मेमोरी में रहता है और फ़ंक्शन, undefined, Date और रेफ़रेंस रख सकता है; JSON सिर्फ़ छह वैल्यू टाइप वाला टेक्स्ट सीरियलाइज़ेशन है। JSON.parse टेक्स्ट को ऑब्जेक्ट बनाता है; JSON.stringify उल्टा करता है।

संदर्भ

  • RFC 8259: The JavaScript Object Notation (JSON) Data Interchange FormatIETF · 2017JSON का व्याकरण: ऑब्जेक्ट, ऐरे, स्ट्रिंग, नंबर, तीन लिटरल और इंटरचेंज एन्कोडिंग के रूप में UTF-8।
  • ECMA-404: The JSON Data Interchange SyntaxEcma International · 2017Ecma मानक के रूप में JSON सिंटैक्स, RFC 8259 के अनुरूप।
  • Introducing JSONjson.orgJSON का मूल एक-पृष्ठ विवरण, सिंटैक्स डायग्राम के साथ।
  • JSON Schema SpecificationJSON SchemaJSON दस्तावेज़ की संरचना का वर्णन और वैलिडेशन करने की शब्दावली (टाइप, आवश्यक प्रॉपर्टी, फ़ॉर्मेट)।

अभ्यास

टूटा हुआ order fixture ठीक करें और response को contract से जाँचें

आपका काम

आप एक online grocery store (काल्पनिक) की orders API टेस्ट करते हैं। एक automated API टेस्ट कोई request भेजने से पहले ही fail हो जाता है, क्योंकि test runner request body को पार्स नहीं कर पाता: यह order-request.json fixture है जिसे एक साथी ने हाथ से लिखा था। Material का Part A यह फ़ाइल दिखाता है; बाईं ओर के line numbers फ़ाइल का हिस्सा नहीं हैं।

Fixture ठीक होने के बाद टेस्ट order बनाता है, और staging पर GET /api/v1/orders/ORD-77815 Part C वाला response लौटाता है। यह बिना किसी एरर के पार्स होता है। इसे Part B के contract अंश से field-दर-field जाँचें, और हर deviation के लिए बताएँ कि उसे सिंटैक्स वैलिडेशन पकड़ेगा, स्कीमा वैलिडेशन पकड़ेगा, या कोई भी नहीं। पहले पेन और काग़ज़ से काम करें, फिर JSON वैलिडेटर, JSON ट्री व्यूअर और JSON Path टेस्टर से अपने नतीजे पक्के करें।

सामग्री
Part A - order-request.json, fail होने वाले टेस्ट की request body
(बाईं ओर के line numbers फ़ाइल का हिस्सा नहीं हैं)

 1  {
 2    // checkout regression: customer with a saved address
 3    "customerId": "CUS-1042",
 4    "currency": 'SAR',
 5    items: [
 6      { "sku": "MLK-1L", "quantity": 2, "unitPrice": 6.50 },
 7      { "sku": "RCE-5KG", "quantity": 01, "unitPrice": 42. },
 8    ],
 9    "giftWrap": False,
10    "couponCode": null,
11    "deliveryNote": "Leave it at the gate marked "B"",
12  }

Part B - API contract का अंश: GET /api/v1/orders/{orderId} की response body
(नीचे के सभी fields ज़रूरी हैं)

Field              Type                   नियम
orderId            string                 उदाहरण: "ORD-77815"
status             string                 इनमें से एक: "pending", "paid", "shipped",
                                          "delivered", "cancelled"
customer.id        string                 उदाहरण: "CUS-1042"
customer.phone     string                 सऊदी mobile number: "05" के बाद 8 अंक
items              array of objects       कम से कम 1 item
items[].sku        string                 order किए गए product का code
items[].quantity   integer                1 या ज़्यादा
items[].unitPrice  number                 SAR, अधिकतम 2 decimal places
total              number                 SAR, अधिकतम 2 decimal places;
                                          सभी items के quantity x unitPrice का जोड़
giftWrap           boolean
couponCode         string or null         कोई coupon इस्तेमाल न होने पर null
deliveredAt        string or null         date-time; order deliver होने तक null

Part C - staging: GET /api/v1/orders/ORD-77815
200 OK, Content-Type: application/json

{
  "orderId": "ORD-77815",
  "status": "Paid",
  "customer": { "id": "CUS-1042", "phone": 501234567 },
  "items": [
    { "sku": "MLK-1L", "quantity": "2", "unitPrice": 6.5 },
    { "sku": "RCE-5KG", "quantity": 0, "unitPrice": 42 }
  ],
  "total": 55,
  "giftWrap": "false",
  "couponCode": null
}
चरण
  1. Part A: fixture को लाइन-दर-लाइन गाइड के सिंटैक्स नियमों से मिलाकर पढ़ें। हर एरर के लिए line number, टूटा हुआ नियम और सही किया गया टेक्स्ट लिखें। जो लाइनें जैसी हैं वैसी ही वैध हैं, उन्हें भी नोट करें।
  2. मूल fixture को, line numbers के बिना, JSON वैलिडेटर में पेस्ट करें। सिर्फ़ उसी लाइन और कॉलम का एरर ठीक करें जो वह बताता है, फिर से वैलिडेट करें, और तब तक दोहराएँ जब तक डॉक्यूमेंट वैध न हो जाए। Rounds गिनें और अपनी लिस्ट से तुलना करें।
  3. Part C: response की हर वैल्यू का JSON टाइप लिखें (JSON ट्री व्यूअर उन्हें दिखाता है), और हर वह key जो contract में ज़रूरी है लेकिन response में नहीं है।
  4. हर field की Part B से तुलना करें: टाइप, अनुमत वैल्यू, रेंज और मौजूदगी। हर field को सही या deviation चिह्नित करें, और बताएँ कि वैलिडेशन का कौन-सा स्तर उसे पकड़ेगा।
  5. JSON Path टेस्टर में एक ऐसा एक्सप्रेशन लिखें जो हर item की quantity लौटाए, और प्रकार (Type) कॉलम पढ़ें। फिर total को सही की गई request से और response के items से दोबारा गिनें: यह तुलना क्या दिखाती है जो कोई स्कीमा नहीं दिखा सकता?
मॉडल उत्तर दिखाएँ
मॉडल उत्तर

Part A में नौ सिंटैक्स एरर हैं। लाइन 2: कमेंट; JSON में कमेंट नहीं होते। लाइन 4: 'SAR' सिंगल कोट्स में है; "SAR" लिखें। लाइन 5: key items कोट्स में नहीं है; "items" लिखें। लाइन 7 में तीन एरर हैं: 01 में आगे शून्य है (1 लिखें), 42. दशमलव बिंदु पर ख़त्म होता है (42 या 42.00 लिखें), और ऐरे के आख़िरी element के बाद वाला कॉमा हटाना होगा। लाइन 9: False छोटे अक्षरों में false होना चाहिए। लाइन 11 में दो एरर: अंदर के डबल कोट्स स्ट्रिंग को समय से पहले ख़त्म कर देते हैं, इसलिए उन्हें बैकस्लैश से एस्केप करें, "Leave it at the gate marked \"B\"", और ऑब्जेक्ट के आख़िरी member के बाद वाला कॉमा हटाना होगा।

लाइन 1, 3, 6, 8, 10 और 12 वैध हैं। 6.50 सही नंबर है (दशमलव बिंदु के बाद शून्य चलते हैं), null वैध वैल्यू है, और कॉमा सिर्फ़ आख़िरी element के बाद एरर है, इसलिए लाइन 6 के अंत का कॉमा ठीक है। कमेंट को "_comment" जैसी key में बदलने की बजाय हटा दें: fixture ही request body है, इसलिए कोई भी extra key API को भी भेजी जाएगी। Note को टेस्ट के नाम या description में रखें।

वैलिडेटर को नौ rounds लगते हैं, ऊपर की लिस्ट के क्रम में हर एरर के लिए एक, क्योंकि पार्सर पहले मिले एरर पर ही रुक जाता है। लाइन और कॉलम पर भरोसा करें, क्योंकि पार्सर वहीं रुका था; hint उस जगह के आसपास के टेक्स्ट से लगाया गया अनुमान है, इसलिए उसे नियमों से मिलाकर देखें। कमेंट वाली लाइन हटाने के बाद आगे की हर line number एक ऊपर खिसक जाती है। दोनों ट्रेलिंग कॉमा अक्सर अगली लाइन के closing bracket पर रिपोर्ट होते हैं, जहाँ पार्सर उन्हें पकड़ता है। इसलिए एक रिपोर्ट हुए एरर का मतलब कभी "एक ही एरर" नहीं होता: पहले पूरा डॉक्यूमेंट नियमों से मिलाकर पढ़ें, फिर वैलिडेटर से पुष्टि करें। यह भी ध्यान दें कि fail हुए टेस्ट ने API के बारे में कुछ नहीं बताया: defect testware में था, इसलिए fixture ठीक करें और API के ख़िलाफ़ कोई defect दर्ज न करें।

Part C, टाइप: orderId, status और customer.id स्ट्रिंग हैं; customer.phone नंबर है; items दो ऑब्जेक्ट की ऐरे है जिनकी sku वैल्यू स्ट्रिंग हैं; quantity पहले item में स्ट्रिंग ("2") और दूसरे में नंबर (0) है; दोनों unitPrice और total नंबर हैं; giftWrap स्ट्रिंग है; couponCode null है। deliveredAt मौजूद ही नहीं है।

सही: orderId, customer.id, items (दो ऑब्जेक्ट की ऐरे), दोनों sku, दोनों unitPrice, couponCode, और total का टाइप व फ़ॉर्मेट (उसकी वैल्यू नीचे जाँची गई है)। JSON नंबर एक वैल्यू है, दिखाने का फ़ॉर्मेट नहीं: 6.5 और 6.50 एक ही नंबर हैं और 42 वैध नंबर है, इसलिए "6.50 SAR" दिखाना स्क्रीन का काम है। couponCode में null अनुमत है और उसका मतलब है कि कोई coupon इस्तेमाल नहीं हुआ।

Deviations, जिन्हें स्कीमा वैलिडेशन पकड़ता है और सिंटैक्स वैलिडेशन एक को भी नहीं, क्योंकि response वैध JSON है: (1) status "Paid" है; स्ट्रिंग की तुलना हूबहू होती है, इसलिए "paid" जाँचने वाला client paid order नहीं देखता (अनुमत वैल्यू, यानी enum)। (2) customer.phone नंबर 501234567 है; JSON नंबर में आगे शून्य नहीं हो सकता, इसलिए नंबर के रूप में भेजा गया phone number हमेशा अपना शून्य खो देता है (टाइप string, pattern)। (3) items[0].quantity स्ट्रिंग "2" है; JavaScript में "2" + 1 का नतीजा "21" है, इसलिए एक और item जोड़ने वाला cart 21 दिखाता है (टाइप integer)। (4) items[1].quantity 0 है, जो minimum 1 से कम है (minimum)। (5) giftWrap स्ट्रिंग "false" है; JavaScript में हर non-empty स्ट्रिंग truthy होती है, इसलिए if (order.giftWrap) order को gift wrap वाला मान लेता है (टाइप boolean)। (6) deliveredAt ग़ायब है; ग़ायब key null नहीं होती, और order.deliveredAt === null false देता है क्योंकि वैल्यू undefined है (required)।

एक्सप्रेशन $.items[*].quantity "2" को टाइप string के साथ और 0 को टाइप number के साथ लौटाता है, इसलिए quantity के दोनों deviations एक ही query में दिख जाते हैं, और automated टेस्ट इसी path पर assertion लगाएगा। प्रकार (Type) कॉलम number दिखाता है, integer नहीं: JSON में नंबर का एक ही टाइप है, और "integer" contract का नियम है (JSON Schema में इसके लिए integer टाइप है)। API रिस्पॉन्स एनालाइज़र बिना किसी contract के कुछ deviations की ओर इशारा करता है (quantity स्ट्रिंग के रूप में और हर item में अलग टाइप के साथ, giftWrap स्ट्रिंग के रूप में), लेकिन वह नहीं जान सकता कि status की spelling, phone number, ग़ायब key या शून्य quantity गलत हैं। यह सिर्फ़ contract बताता है।

कोई भी स्तर नहीं: सही की गई request ने 2 × 6.50 + 1 × 42.00 = 55.00 SAR का order दिया, और total 55 है, जो मेल खाता है। लेकिन response के items का जोड़ 2 × 6.5 + 0 × 42 = 13 है, इसलिए वे contract के इस नियम को तोड़ते हैं कि total उनका जोड़ है, और request से तुलना दिखाती है कि गलती RCE-5KG की quantity में है, total में नहीं। स्कीमा हर वैल्यू को अकेले जाँचता है; वह कई fields में फैला जोड़ नहीं जाँच सकता, न response की तुलना order की गई चीज़ों से कर सकता है। अगर server quantity 3 लौटाता, तो स्कीमा का हर नियम pass होता। इसके लिए test oracle चाहिए, यानी expected result का स्रोत, जो यहाँ request है: उससे expected values गिनें और assertion में उनकी तुलना करें। हर deviation को field path, expected और actual value के साथ रिपोर्ट करें, जैसे "items[0].quantity: expected 1 या उससे बड़ा integer, actual स्ट्रिंग "2"", और request व response संलग्न करें।

इस topic में आपकी प्रगति

QA रोडमैप का हिस्सा

इस गाइड में बताए गए टूल्स

अपने ब्राउज़र में ही JSON को तुरंत फ़ॉर्मेट, सुंदर और वैलिडेट करें, मनचाहे इंडेंटेशन के साथ।

JSON और डेटा

JSON सिंटैक्स वैलिडेट करें और गलतियों की सटीक जगह के साथ सुधार के उपयोगी सुझाव पाएँ।

JSON और डेटा

JSON को कोलैप्सिबल ट्री के रूप में देखें — पाथ, टाइप और वैल्यू की संख्या के साथ।

JSON और डेटा

पेलोड का साइज़ घटाने के लिए स्पेस हटाकर JSON को मिनिफ़ाई करें।

JSON और डेटा

दो JSON डॉक्यूमेंट की सिमैंटिक तुलना करें और जोड़ी गई, हटाई गई तथा बदली गई वैल्यू हाइलाइट करें।

JSON और डेटा

JSON ऑब्जेक्ट के ऐरे को CSV में बदलें, नेस्टेड कीज़ को समतल करते हुए।

JSON और डेटा

JSON को साफ़ और पढ़ने योग्य YAML में बदलें।

JSON और डेटा

JSON डॉक्यूमेंट को JSON Schema (draft-07 / 2019-09 / 2020-12 के मुख्य कीवर्ड) के विरुद्ध वैलिडेट करें।

JSON और डेटा

Mutqan Soft कैसे मदद कर सकता है

और गाइड

और गाइड
API टेस्टिंग

API टेस्टिंग क्या है? REST API कैसे टेस्ट करें

API टेस्टिंग समझें: यह क्या है, हर रिक्वेस्ट और रिस्पॉन्स में क्या जाँचें, REST API टेस्ट करने का स्टेप-बाय-स्टेप तरीका, आम गलतियाँ और मुफ़्त टूल्स।

7 मिनट पढ़ने का समय
API टेस्टिंग

API टेस्टिंग के तरीक़ों की तुलना

API टेस्टिंग के पाँच तरीक़े — एक्सप्लोरेटरी, स्क्रिप्टेड, कॉन्ट्रैक्ट, मॉकिंग और लोड — हर एक क्या पकड़ता है, और REST, GraphQL, SOAP व वेबहुक कैसे अलग हैं।

8 मिनट पढ़ने का समय
सुरक्षा

JWT क्या है? JSON Web Token समझें

JWT आसान भाषा में: JSON Web Token के तीन हिस्से, exp और sub जैसे क्लेम, डिकोड और वेरिफ़ाई कैसे करें, डिकोड करना वेरिफ़ाई क्यों नहीं, और सिक्योरिटी।

5 मिनट पढ़ने का समय
एन्कोडिंग

Base64 क्या है? एन्कोडिंग समझें

Base64 समझें: यह क्या है और क्या नहीं, एन्कोडिंग कैसे काम करती है, आउटपुट एक-तिहाई क्यों बढ़ता है, Base64 बनाम Base64URL, = पैडिंग, और एन्कोड-डिकोड।

5 मिनट पढ़ने का समय
यूटिलिटीज़

UUID क्या है? v4 बनाम v7, UUID बनाम GUID और ULID

UUID समझें: 128-बिट फ़ॉर्मेट, v4 बनाम v7, डेटाबेस key के लिए v7 बेहतर क्यों, UUID बनाम GUID बनाम ULID, कॉलिज़न की संभावना, और जनरेट-वैलिडेट कैसे करें।

5 मिनट पढ़ने का समय
वेब

HTTP स्टेटस कोड समझें

HTTP स्टेटस कोड की हर क्लास उन कोड के साथ जो असल में मिलते हैं — 200, 301, 400, 401, 403, 404, 422, 429, 500, 502, 503, 504 — वजह और कौन-सा लौटाएँ।

5 मिनट पढ़ने का समय