PHP में JSON के साथ काम करना: डेटा का पार्सिंग और सीरियलाइज़ेशन

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

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

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

PHP में JSON के साथ काम करना: पार्सिंग और सीरियलाइज़ेशन के लिए पूर्ण गाइड



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



JSON क्या है और PHP में इसकी आवश्यकता क्यों है?



JSON एक टेक्स्ट-आधारित फॉर्मेट है जो JavaScript के सिंटैक्स पर आधारित है। इसका उपयोग सर्वर और क्लाइंट (जैसे REST API) के बीच संरचित डेटा ट्रांसफर करने के लिए किया जाता है। PHP में JSON निम्नलिखित स्थितियों में अपरिहार्य है:



  • बाहरी API (जैसे मौसम सेवाएं, भुगतान प्रणाली) के साथ डेटा का आदान-प्रदान
  • कॉन्फ़िगरेशन फ़ाइलों को संग्रहीत करना
  • कैशिंग के लिए डेटा को सीरियलाइज़ करना
  • वेब-सॉकेट और AJAX अनुरोधों के साथ काम करना


PHP संस्करण 5.2.0 से JSON के साथ काम करने का समर्थन करता है। सभी आवश्यक फंक्शन कोर में निर्मित हैं — अतिरिक्त एक्सटेंशन स्थापित करने की आवश्यकता नहीं है।



डेटा को JSON में सीरियलाइज़ करना (json_encode)



json_encode() फंक्शन PHP मानों (एरे, ऑब्जेक्ट, स्ट्रिंग्स, नंबर्स) को JSON स्ट्रिंग में परिवर्तित करता है। आइए एक बुनियादी उदाहरण देखें:



<?php// एसोसिएटिव एरे$user = [    'name' => 'Ivan Petrov',    'age' => 28,    'email' => 'ivan@example.com',    'is_active' => true,    'hobbies' => ['programming', 'chess', 'running']];

// JSON में एनकोड करें$jsonString = json_encode($user, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);echo $jsonString;?>


निष्पादन का परिणाम:



{    "name": "Ivan Petrov",    "age": 28,    "email": "ivan@example.com",    "is_active": true,    "hobbies": [        "programming",        "chess",        "running"    ]}


json_encode के महत्वपूर्ण फ्लैग



  • JSON_UNESCAPED_UNICODE — सिरिलिक वर्णों को संरक्षित करता है (इस फ्लैग के बिना रूसी वर्ण \\uXXXX के रूप में एस्केप हो जाएंगे)
  • JSON_PRETTY_PRINT — पठनीयता के लिए इंडेंटेशन के साथ आउटपुट को फॉर्मेट करता है
  • JSON_NUMERIC_CHECK — संख्यात्मक स्ट्रिंग्स को नंबर्स में परिवर्तित करता है
  • JSON_FORCE_OBJECT — भले ही खाली एरे पास किया गया हो, जबरन ऑब्जेक्ट बनाता है


PHP में JSON को पार्स करना (json_decode)



json_decode() फंक्शन उल्टा रूपांतरण करता है — JSON स्ट्रिंग से PHP मान में। डिफ़ॉल्ट रूप से, यह एक ऑब्जेक्ट लौटाता है। एसोसिएटिव एरे प्राप्त करने के लिए, दूसरा पैरामीटर true पास करें:



<?php$jsonString = '{"name":"Ivan Petrov","age":28,"email":"ivan@example.com","is_active":true}';

// ऑब्जेक्ट में डिकोड करें$userObject = json_decode($jsonString);echo $userObject->name; // Ivan Petrov

// एसोसिएटिव एरे में डिकोड करें$userArray = json_decode($jsonString, true);echo $userArray['name']; // Ivan Petrov?>


नेस्टिंग की गहराई



json_decode() का तीसरा पैरामीटर — depth — रिकर्सन की गहराई को सीमित करता है। डिफ़ॉल्ट रूप से यह 512 है। यह "billion laughs attack" जैसे हमलों से बचाता है:



<?php$deepJson = '{"a":{"b":{"c":{"d":"test"}}}}';$data = json_decode($deepJson, true, 3); // यदि गहराई 3 से अधिक है तो त्रुटि?>


JSON के साथ काम करते समय त्रुटियों को संभालना



अमान्य JSON को पार्स करने पर json_decode() null लौटाता है। त्रुटि के बारे में विस्तृत जानकारी प्राप्त करने के लिए, json_last_error() और json_last_error_msg() का उपयोग करें:



<?php$badJson = '{"name": "Ivan", age: 28}'; // त्रुटि: key age उद्धरणों में नहीं है

$data = json_decode($badJson, true);

if (json_last_error() !== JSON_ERROR_NONE) { ```

ब्लॉग

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