ऑब्जेक्ट को जेसन जावास्क्रिप्ट में कनवर्ट करें

| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |

एक गोलाकार संरचना एक वस्तु है जो स्वयं को संदर्भित करती है। निम्नलिखित उदाहरण में, ऑब्जेक्ट (obj) को स्थान कुंजी के मान के रूप में संदर्भित किया गया है।

XML की तरह, JSON (जावास्क्रिप्ट ऑब्जेक्ट नोटेशन) का उपयोग डेटा संग्रहण और विनिमय के लिए किया जाता है। JSON को XML की तुलना में पार्स या विभाजित करना बहुत आसान है और JSON.stringify () विधि के साथ ऑब्जेक्ट को स्ट्रिंग्स में कनवर्ट करते समय अधिमानतः उपयोग किया जाता है।

सर्कुलर संरचनाओं को JSON में कनवर्ट करने में त्रुटि h2>

JSON ऑब्जेक्ट संदर्भों का समर्थन नहीं करता है, इसलिए किसी JSON ऑब्जेक्ट को श्रृंखलाबद्ध करने का प्रयास जो स्वयं संदर्भ देता है, एक टाइपो में परिणाम देगा। यह एक त्रुटि है जो तब उत्पन्न हो सकती है जब आप किसी ऐसे मान को बदलने का प्रयास करते हैं जिसे बदला नहीं जा सकता या जब आप किसी मान का अनुपयुक्त उपयोग करते हैं।

<इनपुट प्रकार =" छिपा हुआ "नाम =" ck_source "value =" करियरकर्म-वेब "> <इनपुट टाइप = "हिडन" नाम = "सीके_मीडियम" वैल्यू = "ब्लॉग"> <इनपुट टाइप = "हिडन" नाम = "सीके_कैंपेन" वैल्यू = "एफटी-एक्सप्रेस-डब्ल्यूजीटी-ब्लॉग"> <इनपुट टाइप = "हिडन" नाम = " प्रवाह" मान = "एसएफटी"> <बटन प्रकार = "सबमिट" आईडी = "सबमिट 4" वर्ग = "बीटीएन बीटीएन-सफलता बीटीएन-ब्लॉक बटन-एजेक्स-फॉर्म" शैली = "पृष्ठभूमि-रंग: # ff9d38! जरूरी; सीमा रंग: # ff9d38; अस्पष्टता: 1; सफेद रंग; चौड़ाई: 100%; फोंट की मोटाई: बोल्ड; फ़ॉन्ट आकार: 13px; "> एक मैच प्राप्त करें <स्क्रिप्ट प्रकार = "पाठ / जावास्क्रिप्ट"> jQuery (`# contactForm2`)। सबमिट करें (फ़ंक्शन (ईवेंट) {var फ़ोन = jQuery (`# msg_phone`)। वैल (); फ़ोन = फ़ोन। बदलें (// $ /, ``) .replace (`+ (`, ``) .replace ( `) +`, ``) .replace (``, ``) .replace (`+ -`, ``) .replace (`-`, ``) .replace (`(`, ``) .replace (`)`, ``) .replace (`.`, ``); phone = phone.replace (``, ``); phone = phone .replace (``, ``); var otherphone = phone. सबस्ट्रिंग (2); अगर (अन्य फोन। विभाजित (``) .e बहुत (चार => चार === अन्य फोन [0])) {jQuery (`# त्रुटि_फोन`)। दिखाएँ (); झूठा रिटर्न; } और { var phoneField = jQuery (`# msg_phone`); phoneField.removeAttr ("अधिकतम लंबाई"); phoneField.removeAttr ("स्कीमा"); phoneField.val (फ़ोन); सच लौटाता है; }}) <शैली मीडिया = "सभी"> घंटा {रंग: # 000; ऊंचाई: 3px} <आंकड़ा वर्ग = "wp-ब्लॉक-छवि"> स्क्रीनशॉट 402

संभावित समाधान

JSON.chaaîne ify () न केवल चेन के स्वीकार्य उत्पादों को परिवर्तित करता है, इसमें एक प्रतिस्थापन पैरामीटर भी शामिल है जो मानों को प्रतिस्थापित कर सकता है यदि प्रेषित फ़ंक्शन को ऐसा करने के लिए निर्दिष्ट किया गया है। यह कैसे होता है यह समझने के लिए नीचे दिए गए कोड का विश्लेषण करें।

यहां हमारे replaceFunc में- ऊपर, हम कॉल करें आर डेटा। नया कीवर्ड एक ऑपरेटर है जो एक खाली ऑब्जेक्ट बनाता है।

हमारे रिटर्न स्टेटमेंट में, हमने if स्टेटमेंट्स को नेस्ट किया है। हमारा पहला अगर स्टेटमेंट टाइपऑफ़ ऑपरेटर का उपयोग करता है जो मूल्यांकन करने के लिए आदिम (अपरिभाषित, नल, बूलियन, संख्या, स्ट्रिंग, फ़ंक्शन, बिगइंट, प्रतीक) का प्रकार देता है।

यदि हमारा मान प्रकार किसी वस्तु के बराबर है और उस वस्तु का मान शून्य नहीं है, तो यह दूसरे पर जारी रहेगा if कथन, जाँच कर रहा है कि क्या मान WeakSet () में है।

यह हमें कंसोल में वांछित स्ट्रिंग परिणाम देगा।

; "{" नाम ":" जॉन "," उम्र ": 23," लिंग ":" पुरुष "}"

इस त्रुटि के अन्य संभावित समाधान पुस्तकालयों का उपयोग करना है जैसे जैसा कि circular-json है, जो एक गोलाकार JSON पार्सर है, या cycle.js , IE8 उपयोगकर्ताओं के लिए बनाया गया है।

सर्कुलर JSON किसी विशेष JSON प्रारूप के लिए और उसके सर्कुलर संदर्भ वाले मान्य JSON ऑब्जेक्ट्स को क्रमबद्ध और अक्रमांकन करता है।

निष्कर्ष

JSON समर्थन नहीं करता है ऑब्जेक्ट संदर्भ, इसलिए यदि आप एक JSON ऑब्जेक्ट को चेन करने का प्रयास करते हैं जो स्वयं को संदर्भित करता है, तो एक टाइपो होगा। एक गोलाकार संरचना एक ऐसी वस्तु है जो स्वयं को संदर्भित करती है। ऐसी वस्तुओं को श्रृंखलाबद्ध करने में सक्षम होने के लिए, डेवलपर स्ट्रिंग () विधि में बदलें पैरामीटर का उपयोग कर सकते हैं, यह सुनिश्चित करते हुए कि पारित फ़ंक्शन दोहराए गए या परिपत्र डेटा को फ़िल्टर करता है।

Usin जी लाइब्रेरी जैसे सर्कुलर-जेसन भी इस त्रुटि का समाधान हो सकता है।