2014-10-07 21 views
6

के अंदर मैं JSON अनुरोध के अंदर एक JSON स्ट्रिंग बनाना चाहता हूं। यहाँ मेरी कोड,JSON स्ट्रिंग एक JSON

Fiddle

जे एस

var x = { 
    a: 1, 
    b: 'a sample text', 
}; 

var request = { 
    t: JSON.stringify(x), 
    c: 2, 
    r: 'some text' 
}; 

console.log(request); 

कोई मेरी मदद कर सकते हैं कि कैसे दोहरे उद्धरण चिह्नों से बचने के लिए है?

कंसोल

Object { 
    t: "{"a":1,"b":"a sample text"}", //This creates a problem, double quotes inside double quotes. 
    c: 2, 
    r: "some text" 
} 

अग्रिम धन्यवाद।

+1

आपको कोई समस्या नहीं है। यदि आप 'JSON.stringify (अनुरोध) करते हैं' तो आपको एक पूरी तरह से मान्य JSON ऑब्जेक्ट मिलेगा। फिर आप 'JSON.parse' कर सकते हैं और पुष्टि करते हैं कि आप मूल पर एक समान वस्तु वापस लेते हैं। –

+1

यह प्रश्न ऑफ-विषय प्रतीत होता है क्योंकि वास्तव में यहां कोई समस्या नहीं है। –

+0

स्ट्रिंग ** अक्षर ** का उपयोग करते समय उचित रूप से उद्धरण चिह्नों से बचने के लिए केवल एक समस्या है। आपको उनसे बचना होगा ताकि * पार्सर * समझ सके कि स्ट्रिंग मान समाप्त होता है। हालांकि, आप स्ट्रिंग * प्रोग्रामेटिक * उत्पन्न कर रहे हैं, इस बिंदु पर पार्सर अब और शामिल नहीं है। –

उत्तर

5

अभी जिस तरह ब्राउज़र कंसोल आप एक के मान से पता चलता है कि के साथ, एक JSON अनुरोध है, जहां यह JSON.stringify एड एक और समय होगा में प्रयोग किया जाता है आउटपुट के लिए डबल कोट्स में लपेटकर स्ट्रिंग। यह पूरी तरह से सामान्य है और कुछ भी टूटा नहीं है।

आप अपने JSON स्ट्रिंग को किसी ऑब्जेक्ट में वापस करके और किसी प्रॉपर्टी का उपयोग करके इसे परीक्षण कर सकते हैं।

console.log(JSON.parse(request.t).b); // a sample text 
+0

console.log (JSON.parse (request.t)); यदि आप किसी अन्य जेसन के अंदर एक जेसन बना रहे हैं तो पर्याप्त होना चाहिए। – webjockey

3

कोई समस्या नहीं है। यह सिर्फ आपका console.log है जो " के साथ बस सीमित करके सभी तार दिखाता है।

तुम कहो इस request वस्तु मान्य परिणाम

{"t":"{\"a\":1,\"b\":\"a sample text\"}","c":2,"r":"some text"}