2013-05-12 14 views
15

स्ट्रिंग किया गया है, मैं जेएसओएन ऑब्जेक्ट्स को वेब सेवा से जावास्क्रिप्ट में ऑब्जेक्ट्स में पुन: प्राप्त कर रहा हूं। कई स्थानों पर यह स्ट्रिंगिफाइड हो जाता है (यह ओबीजे कुछ प्लगइन के माध्यम से जाता है और यह इसे घुमाता है और इसे स्टोर करता है और इसे पुनः प्राप्त करता है) और यह कई स्लैश जोड़ता है। मैं इससे कैसे बच सकता हूं?JSON.stringify हर बार डबल कोट्स से बच निकलता है जब

http://jsfiddle.net/MJDYv/2/

var obj = {"a":"b", "c":["1", "2", "3"]}; 
var s = ""; 
console.log(obj); 
s = JSON.stringify(obj); 
alert(s); // Proper String 
s = JSON.stringify(s); 
alert(s); // Extra slash added, Quotes are escaped 
s = JSON.stringify(s); 
alert(s); // Again quotes escaped or slash escaped but one more slash gets added 
var obj2 = JSON.parse(s); 
console.log(obj2); // Still a String with one less slash, not a JSON object ! 

इसलिए जब इस एकाधिक स्ट्रिंग मैं फिर से एक तार के साथ अंत को पार्स। और जब किसी ऑब्जेक्ट की तरह पहुंचने का प्रयास किया तो यह दुर्घटनाग्रस्त हो जाता है।

मैं replace(/\\/g,"") का उपयोग करके स्लेश दूर करने के लिए कोशिश की, लेकिन मैं इस के साथ समाप्त: ""{"a":"b","c":["1","2","3"]}""

उत्तर

20

आपको क्या होने की अपेक्षा की थी?

JSON.stringify डेटा पर कॉल किए जाने पर "पहचान" फ़ंक्शन की तरह कार्य नहीं करता है जिसे पहले ही JSON में परिवर्तित कर दिया गया है। डिजाइन से, यह भागने उद्धरण चिह्न, बैकस्लैश, आदि

आप के रूप में आप JSON.stringify() कहा जाता है एक ही वस्तु आप में डाल वापस पाने के लिए JSON.parse() बिल्कुल के रूप में कई बार फोन करने के लिए की जरूरत है।

+0

हाँ मैं इसे दो बार बुला रहा हूं। लेकिन कुछ स्थानों पर इसके 3 या 4 बार बुलाया जाता है। – user88975

+2

धन्यवाद दोस्त। आपने मेरा दिन बना दिया। –

5

आप बच सकते हैं होगा कि बस उस डेटा पर JSON.stringify() पर कॉल करके जिसे आप JSON में बदलना चाहते हैं।

+0

हां, लेकिन मूल स्ट्रिंग फ़ंक्शन कॉल की श्रृंखला (कुछ प्लगइन में) के माध्यम से जाती है और आखिर में जब यह लौटाया जाता है तो मुझे यकीन नहीं होता कि यह कितनी बार स्ट्रिंग हो गया है। – user88975

+4

इसे तब तक कठोर न करें जब तक आपको इसकी आवश्यकता न हो। तब तक, बस जावास्क्रिप्ट 'परिणाम' ऑब्जेक्ट में डेटा जोड़ें। –

संबंधित मुद्दे