PHP JSON: तेज और त्रुटि-रहित डेटा रिटर्न करना सीखें

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

API डिबगिंग: आपका JSON एरर के साथ क्यों लौट रहा है?

\n\n

क्या आपने कभी रात के तीन बजे Postman की खाली स्क्रीन देखते हुए सोचा है, "मेरी PHP स्क्रिप्ट JSON की जगह HTML क्यों दे रही है?" अगर हाँ, तो आप अकेले नहीं हैं। Stack Overflow पर PHP स्क्रिप्ट से JSON रिटर्न करना एक बहुत लोकप्रिय टॉपिक है, और इसके पीछे वजह है। हर दूसरा शुरुआती backend डेवलपर एक ही गलती करता है: हेडर भूल जाना, अनचाहा आउटपुट, गलत Content-Type।

\n\n

इस लेख में हम सिर्फ फोरम का जवाब कॉपी नहीं करेंगे। हम समझेंगे कि PHP से JSON को सही, तेज़ और बिना किसी सरप्राइज़ के कैसे लौटाया जाए। आप जानेंगे कि exit(json_encode($data)) क्यों आपको निराश कर सकता है, सीरियलाइज़ेशन पर मिलीसेकंड कैसे बचाएं, और अगर JSON अचानक "खराब" हो जाए तो क्या करें।

\n\n

तैयार हैं? चलिए शुरू करते हैं।

\n\n

सही JSON रिस्पॉन्स की संरचना

\n\n

बुनियादी बातों से शुरू करते हैं। यह है गलत तरीका:

\n\n
<?php\n$data = ['status' => 'ok', 'message' => 'नमस्ते!'];\necho json_encode($data);\n?>
\n\n

यह खराब क्यों है? पहली बात, इसमें Content-Type हेडर नहीं है। ब्राउज़र या क्लाइंट इसे HTML या टेक्स्ट समझ सकता है। दूसरी बात, अगर कोड में पहले कोई स्पेस, echo या वॉर्निंग है, तो JSON टूट जाएगा।

\n\n

सही न्यूनतम टेम्पलेट इस तरह दिखता है:

\n\n
<?php\nheader('Content-Type: application/json; charset=utf-8');\n$data = ['status' => 'ok', 'message' => 'नमस्ते!'];\necho json_encode($data, JSON_UNESCAPED_UNICODE);\nexit;\n?>
\n\n

ध्यान दें JSON_UNESCAPED_UNICODE पर — यह देवनागरी को पढ़ने योग्य रखता है, न कि \\u0928\\u092e\\u0938\\u094d\\u0924\\u0947 में बदलता है। और exit — रिस्पॉन्स के बाद गलती से आउटपुट होने से बचाता है।

\n\n

हेडर: सिर्फ Content-Type ही नहीं

\n\n

JSON परफॉरमेंस ऑप्टिमाइज़ेशन के लिए कुछ और हेडर जोड़ें:

\n\n
header('Content-Type: application/json; charset=utf-8');\nheader('X-Content-Type-Options: nosniff');\nheader('Cache-Control: no-cache, must-revalidate');
\n\n

X-Content-Type-Options: nosniff ब्राउज़र को कंटेंट टाइप "अनुमान" लगाने से रोकता है — यह सुरक्षा है। और Cache-Control डायनामिक डेटा के लिए उपयोगी है, ताकि क्लाइंट पुराने रिस्पॉन्स को कैश न करे।

\n\n

एरर हैंडलिंग: जब JSON_ENCODE फेल हो जाए

\n\n

json_encode फंक्शन असफल होने पर false लौटाता है। और यहीं से मज़ा शुरू होता है। अगर आप सिर्फ echo json_encode($data) करते हैं और जवाब में खाली स्ट्रिंग मिलती है — क्लाइंट हैरान रह जाएगा।

\n\n

हमेशा रिजल्ट चेक करें:

\n\n
$json = json_encode($data, JSON_UNESCAPED_UNICODE);\nif ($json === false) {\n    http_response_code(500);\n    echo json_encode(['error' => 'JSON encoding failed: ' . json_last_error_msg()]);\n    exit;\n}\necho $json;\nexit;
\n\n

वैसे, json_last_error_msg() एक समझने योग्य स्ट्रिंग लौटाएगा: "Malformed UTF-8 characters" या "Inf and NaN cannot be JSON encoded"। यह डिबगिंग के घंटे बचाएगा।

\n\n

गहराई से नेस्टेड डेटा और रिकर्शन

\n\n

एक और समस्या — ऑब्जेक्ट्स में साइक्लिक रेफरेंस। अगर आप आपसी रेफरेंस वाला ऑब्जेक्ट पास करते हैं, json_encode एरर देगा। समाधान: JSON_PARTIAL_OUTPUT_ON_ERROR का उपयोग करें या पहले ऑब्जेक्ट को ऐरे में बदलें।

\n\n
$json = json_encode($complexObject, JSON_UNESCAPED_UNICODE | JSON_PARTIAL_OUTPUT_ON_ERROR);
\n\n

लेकिन सावधान रहें: आंशिक आउटपुट अधूरा हो सकता है। बेहतर है डेटा स्ट्रक्चर को ठीक करें।

\n\n

PHP में JSON परफॉरमेंस ऑप्टिमाइज़ेशन

\n\n

अब सबसे दिलचस्प भाग पर आते हैं — PHP से JSON रिटर्न को कैसे तेज़ करें।

\n\n

1. सीरियलाइज़्ड JSON को कैश करना

\n\n

अगर डेटा शायद ही बदलता है (डिक्शनरी, कॉन्फिग, शहरों की सूची), तो हर बार सीरियलाइज़ न करें। तैयार JSON को फ़ाइल, Memcached

ब्लॉग

पुस्तक अनुशंसाएँ