जावास्क्रिप्ट में JSON स्ट्रिंग कैसे बनाएं?


96
window.onload = function(){
    var obj = '{
            "name" : "Raj",
            "age"  : 32,
            "married" : false
            }';

    var val = eval('(' + obj + ')');
    alert( "name : " + val.name + "\n" +
           "age  : " + val.age  + "\n" +
           "married : " + val.married );

}

इस तरह से एक कोड में, मैं सिर्फ खेलने के लिए JSON स्ट्रिंग बनाने की कोशिश कर रहा हूं। यह त्रुटि फेंक रहा है, लेकिन अगर मैंने एक ही पंक्ति (पंक्ति 2) में विवाहित सभी नाम, आयु, लगा दिया तो यह नहीं है। समस्या क्या है?


2
इस उत्तर को देखें stackoverflow.com/questions/3904269/…
powtac

जवाबों:


85

जावास्क्रिप्ट कई लाइनों पर स्ट्रिंग्स को संभाल नहीं करता है।

आपको उन लोगों को सम्‍मिलित करना होगा:

var obj = '{'
       +'"name" : "Raj",'
       +'"age"  : 32,'
       +'"married" : false'
       +'}';

आप ES6 और इसके बाद के संस्करण में टेम्पलेट शाब्दिक का उपयोग कर सकते हैं: ( प्रलेखन के लिए यहां देखें )

var obj = `{
           "name" : "Raj",
           "age" : 32,
           "married" : false,
           }`;

13
या शाब्दिक में प्रत्येक पंक्ति के अंत में एक \ डाल दिया।
फ्रॉग्ज

3
मल्टी-लाइन स्ट्रिंग्स के लिए, सिंगल या डबल कोट्स के बजाय, आप `(बैक टू टिक कैरेक्टर) का उपयोग कर सकते हैं (# मुख्य कुंजी के बाईं ओर)। इन्हें 'टेम्प्लेट शाब्दिक' कहा जाता है।
ब्लू

5
निश्चित रूप से: इस उत्तर के लिए व्यवस्थित न हों और दूसरों को देखें।
AsTeR

टेम्पलेट शाब्दिक ECMA स्क्रिप्ट 2015 मानक हैं। यह सवाल और जवाब 2012 से पहले से है। लेकिन मैं इसे :)
bardiir

वास्तव में? स्क्रैच से स्ट्रिंग संघन JSON बनाने का सबसे अच्छा तरीका है? मुझे लगता है कि अन्य उत्तर को स्वीकृत उत्तर होना चाहिए।
rory.ap

264

जिस तरह से मैं यह कर रहा हूँ:

   var obj = new Object();
   obj.name = "Raj";
   obj.age  = 32;
   obj.married = false;
   var jsonString= JSON.stringify(obj);

मुझे लगता है कि इस तरह से त्रुटियों की संभावना कम हो सकती है।


62

JSON.stringify फ़ंक्शन आपके जसन ऑब्जेक्ट को एक स्ट्रिंग में बदल देगा:

var jsonAsString = JSON.stringify(obj);

यदि ब्राउज़र इसे लागू नहीं करता है (IE6 / IE7), JSON2.js स्क्रिप्ट का उपयोग करें । यह सुरक्षित है क्योंकि यह मूल कार्यान्वयन का उपयोग करता है यदि यह मौजूद है।


23

यह बहुत आसान और सरल हो सकता है

var obj = new Object();
obj.name = "Raj";
obj.age = 32;
obj.married = false;

//convert object to json string
var string = JSON.stringify(obj);

//convert string to Json Object
console.log(JSON.parse(string)); // this is your requirement.

13

उपयोग करें JSON.stringify:

> JSON.stringify({ asd: 'bla' });
'{"asd":"bla"}'

यदि आपको पुराने ब्राउज़रों का समर्थन करने की आवश्यकता है, तो json2.js भी देखें ।
डगलस

हां, यहां उनकी GitHub परियोजना सूची का लिंक है: github.com/douglascrockford
डगलस

एसओ पर @nepsdotin डगलस डगलस क्रॉकफोर्ड नहीं है, " अपने
गीथहब के लिए

आह, याद आया कि, नहीं , मैं क्रॉकफोर्ड नहीं हूँ !
डगलस

5

मुझे लगता है कि यह तरीका आपकी मदद करता है ...

var name=[];
var age=[];
name.push('sulfikar');
age.push('24');
var ent={};
for(var i=0;i<name.length;i++)
{
ent.name=name[i];
ent.age=age[i];
}
JSON.Stringify(ent);

-6

json स्ट्रिंग्स में लाइन ब्रेक नहीं हो सकते हैं। आपको इसे एक पंक्ति बनाना होगा {"key":"val","key2":"val2",etc....}:।

लेकिन JSON स्ट्रिंग्स को स्वयं उत्पन्न न करें। वहाँ पुस्तकालयों के बहुत सारे है कि यह तुम्हारे लिए है, जिनमें से सबसे बड़ी jquery है


8
JSON में लाइन ब्रेक हो सकते हैं, लेकिन जावास्क्रिप्ट स्ट्रिंग शाब्दिक सिंटैक्स नहीं हो सकता।

एक स्ट्रिंग के भीतर, हाँ, लेकिन कुंजी / मूल्य जोड़े के बीच नहीं।
मार्क बी

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

1
... अपने प्रश्न में कोड को jsonlint.com (आदि के बिना .... निश्चित रूप से) में पेस्ट करें । Validate पर क्लिक करने के बाद, आप देखेंगे कि यह वास्तव में जब यह सुंदर प्रिंट करता है तो नई सुर्खियाँ डालता है।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.