JSON.stringify और JSON.parse के बीच अंतर


452

इन दो पार्सिंग विधियों का उपयोग करने पर मुझे भ्रम हुआ है।

जब मैं अपना json_encoded डेटा प्रतिध्वनित करता हूं और इसे ajax के माध्यम से वापस प्राप्त करता हूं, तो मैं अक्सर भ्रम में चला जाता हूं कि मुझे JSON.stringify और JSON.parse का उपयोग कब करना चाहिए ।

मैं [object,object]अपने कंसोल.लॉग में मिलता हूं जब पार्स किया जाता है और एक जावास्क्रिप्ट ऑब्जेक्ट जब स्ट्रिंग किया जाता है।

$.ajax({
url: "demo_test.txt",
success: function(data) {
         console.log(JSON.stringify(data))
                     /* OR */
         console.log(JSON.parse(data))
        //this is what I am unsure about?
    }
});

1
नीचे दिए गए जवाबों को समेटने के लिए: 1. वे एक दूसरे के विलोम हैं। 2. संयुक्त यह डेटा को मान्य करने या मानव पठनीय को चालू करने में मदद करता है json.stringify(json.parse(data)):।
हाफेनक्रिंच

जवाबों:


674

JSON.stringify जावास्क्रिप्ट ऑब्जेक्ट को JSON टेक्स्ट में बदलता है और JSON टेक्स्ट को एक स्ट्रिंग में स्टोर करता है, जैसे:

var my_object = { key_1: "some text", key_2: true, key_3: 5 };

var object_as_string = JSON.stringify(my_object);  
// "{"key_1":"some text","key_2":true,"key_3":5}"  

typeof(object_as_string);  
// "string"  

JSON.parse JSON टेक्स्ट की स्ट्रिंग को जावास्क्रिप्ट ऑब्जेक्ट में बदल देता है, जैसे:

var object_as_string_as_object = JSON.parse(object_as_string);  
// {key_1: "some text", key_2: true, key_3: 5} 

typeof(object_as_string_as_object);  
// "object" 

9
json.stringify (json.parse (data))? मैंने इसे कोड में देखा ... इसलिए यह मूल रूप से json डेटा को ऑब्जेक्ट में परिवर्तित कर रहा है और फिर इसे json डेटा में फिर से जोड़ रहा है ..
HIRA THAKUR

29
@MESSIAH - हाँ। यह काफी हद तक व्यर्थ है, लेकिन JSON सत्यापनकर्ता के रूप में काम कर सकता है।
क्वेंटिन

11
वस्तु कुंजी मूल्य युग्मन के लिए एक साधारण ऑब्जेक्ट कॉपी का भी उपयोग किया जा सकता है।
२१:३६ पर शिकारी

4
मैंने इसे कंसोल में डिबगिंग के लिए बहुत उपयोगी पाया है - यह इसे आसानी से पठनीय बनाता है।
14

2
@ क्वेंटिन क्या आप उदाहरण की मदद से समझा सकते हैं?
प्रदीप जैन

57

JSON.parse()"पार्सिंग" के लिए कुछ है जो JSON के रूप में प्राप्त हुआ था।
JSON.stringify()एक वस्तु / सरणी से JSON स्ट्रिंग बनाना है।


4
परिशुद्धता: यह एक वस्तु नहीं हो सकती है।
सेज्यूरेट जूल

सच है, एक सरणी या कुछ भी हो सकता है जावास्क्रिप्ट एक निश्चित प्रकार के रूप में पहचानता है। जमीनी स्तर; इसे लेता है और इसे उपयुक्त JSON समतुल्य में परिवर्तित करता है।
ब्योर्न 'बियॉर्न' का

2
@ डिस्ट्रॉय - इसमें एक ऑब्जेक्ट होना चाहिए (यह ध्यान रखना कि एक ऐरे ऑब्जेक्ट्स हैं)।
क्वेंटिन

2
@ क्वेंटिनJSON.stringify(3)
डेनिस सेगुरेट

@dystroy - हुह, एहसास नहीं हुआ कि उन्होंने JSON के टुकड़ों से निपटने के लिए इसका विस्तार किया । वह अचिन्त्य है।
क्वेंटिन

43

वे एक-दूसरे के विलोम हैं। JSON.stringify()एक JS ऑब्जेक्ट को JSON स्ट्रिंग में अनुक्रमित करता है, जबकि JSON.parse()JSON स्ट्रिंग को JS ऑब्जेक्ट में शामिल करेगा।


25

वे एक-दूसरे के विरोधी हैं।

JSON.stringify ()

JSON.stringify () एक JS ऑब्जेक्ट या JSON स्ट्रिंग में मान को क्रमबद्ध करता है।

JSON.stringify({});                  // '{}'
JSON.stringify(true);                // 'true'
JSON.stringify('foo');               // '"foo"'
JSON.stringify([1, 'false', false]); // '[1,"false",false]'
JSON.stringify({ x: 5 });            // '{"x":5}'

JSON.stringify(new Date(2006, 0, 2, 15, 4, 5)) 
// '"2006-01-02T15:04:05.000Z"'

JSON.stringify({ x: 5, y: 6 });
// '{"x":5,"y":6}' or '{"y":6,"x":5}'
JSON.stringify([new Number(1), new String('false'), new Boolean(false)]);
// '[1,"false",false]'

JSON.parse ()

JSON.parse () विधि JSON के रूप में एक स्ट्रिंग को पार्स करती है, वैकल्पिक रूप से उत्पादित मान को रूपांतरित करती है।

JSON.parse('{}');              // {}
JSON.parse('true');            // true
JSON.parse('"foo"');           // "foo"
JSON.parse('[1, 5, "false"]'); // [1, 5, "false"]
JSON.parse('null');            // null

7
के लिए एक बेहतर नाम parse()होगा objectify()या jsonify()
नू एवरेस्ट

JSON.toString () और JSON.toObject () क्यों नहीं? मैं इन नामों को पसंद करूंगा (विशेषकर नए प्रोग्रामर्स के लिए जो इंटेलीजेंस का उपयोग करते हैं)।
रिचर्ड चेज़रसेउ

2
आप पोस्ट करने के बजाय developer.mozilla.org/en/docs/Web/JavaScript/Reference/… पोस्ट कर सकते हैं
Mahi

@nueverest jsonify(), अस्पष्ट और भ्रामक होगा क्योंकि parse()है नहीं एक परिवर्तित Stringएक करने के लिए JSONप्रकार (है जो jsonify()इंगित करता है होगा), लेकिन parse()एक धर्मान्तरित JSON- प्रारूपण String में से किसी को: Object, Array, Number, String, Booleanया null। लोग अक्सर JSON "स्ट्रिंग प्रतिनिधित्व" और Object(या dictपायथन, आदि में) को भ्रमित करते हैं ।
jbmusso

21

सबसे पहले, JSON.stringify()फ़ंक्शन जावास्क्रिप्ट वैल्यू को जावास्क्रिप्ट ऑब्जेक्ट नोटेशन (JSON) स्ट्रिंग में कनवर्ट करता है। JSON.parse()फ़ंक्शन एक जावास्क्रिप्ट ऑब्जेक्ट नोटेशन (JSON) स्ट्रिंग को ऑब्जेक्ट में परिवर्तित करता है। इन दो कार्यों के बारे में अधिक जानकारी के लिए, कृपया निम्न लिंक देखें।

https://msdn.microsoft.com/library/cc836459(v=vs.94).aspx https://msdn.microsoft.com/library/cc836466(v=vs.94).aspx

दूसरे, इन दोनों कार्यों को समझने के लिए निम्न नमूना आपके लिए उपयोगी होगा।

<form id="form1" runat="server">
    <div>
        <div id="result"></div>
    </div>
</form>

<script>
    $(function () {
        //define a json object
        var employee = { "name": "John Johnson", "street": "Oslo West 16", "phone": "555 1234567" };

        //use JSON.stringify to convert it to json string
        var jsonstring = JSON.stringify(employee);
        $("#result").append('<p>json string: ' + jsonstring + '</p>');

        //convert json string to json object using JSON.parse function
        var jsonobject = JSON.parse(jsonstring);
        var info = '<ul><li>Name:' + jsonobject.name + '</li><li>Street:' + jsonobject.street + '</li><li>Phone:' + jsonobject.phone + '</li></ul>';

        $("#result").append('<p>json object:</p>');
        $("#result").append(info);
    });
</script>

15
var log = { "page": window.location.href, 
        "item": "item", 
        "action": "action" };

log = JSON.stringify(log);
console.log(log);
console.log(JSON.parse(log));

// आउटपुट होगा:

// 1 कंसोल के लिए एक स्ट्रिंग की तरह है:

'{ "page": window.location.href,"item": "item","action": "action" }'

// 2 के कंसोल के लिए एक वस्तु की तरह है:

Object {
page   : window.location.href,  
item   : "item",
action : "action" }

6

JSON.stringify() किसी वस्तु को स्ट्रिंग में परिवर्तित करता है।

JSON.parse() किसी JSON स्ट्रिंग को किसी ऑब्जेक्ट में परिवर्तित करता है।


2
"पूर्णता हासिल की जाती है, न कि जब जोड़ने के लिए और कुछ नहीं होता है, लेकिन जब लेने के लिए कुछ भी नहीं बचता है।" एंटोनी डी सेंट-एक्सुपरी
रोनी रोस्टन

6

यहाँ वास्तविक भ्रम पार्स बनाम स्ट्रिफ़िज़ के बारे में नहीं है, यह dataसफलता कॉलबैक के पैरामीटर के डेटा प्रकार के बारे में है ।

data या तो कच्ची प्रतिक्रिया हो सकती है, यानी एक स्ट्रिंग, या यह एक जावास्क्रिप्ट वस्तु हो सकती है, प्रलेखन के अनुसार:

सफलता

प्रकार: फ़ंक्शन (कुछ भी डेटा, स्ट्रिंग textStatus, jqXHR jqXHR) अनुरोध को सफल होने पर बुलाया जाने वाला एक फ़ंक्शन। फ़ंक्शन तीन तर्कों को पारित करता है: डेटा सर्वर से लौटाया जाता है, डेटाटाइप पैरामीटर या डेटाफिल्टर कॉलबैक फ़ंक्शन के अनुसार स्वरूपित किया जाता है, यदि निर्दिष्ट है; <..>

और डेटाटाइप 'बुद्धिमान अनुमान' की सेटिंग में चूक करता है

डेटाटाइप (डिफ़ॉल्ट: इंटेलिजेंट गेस (xml, json, स्क्रिप्ट या html))

प्रकार: स्ट्रिंग डेटा का प्रकार जो आप सर्वर से वापस आने की उम्मीद कर रहे हैं। यदि कोई भी निर्दिष्ट नहीं किया गया है, तो jQuery MIME प्रकार की प्रतिक्रिया के आधार पर इसका अनुमान लगाने की कोशिश करेगा (एक XML MIME प्रकार XML का उत्पादन करेगा, 1.4 में JSON एक जावास्क्रिप्ट ऑब्जेक्ट उत्पन्न करेगा, 1.4 स्क्रिप्ट में स्क्रिप्ट निष्पादित करेगा, और कुछ भी होगा एक स्ट्रिंग के रूप में लौटा)।


2
यह एक बहुत ही उपयोगी जोड़ है, क्योंकि यह समझने में मदद करता है कि भ्रम क्या है!
rmcsharry

4

जावास्क्रिप्ट ऑब्जेक्ट <-> JSON स्ट्रिंग


JSON.stringify() <-> JSON.parse()

JSON.stringify (obj) - किसी भी सीरियल करने योग्य ऑब्जेक्ट को लेता है और स्ट्रिंग के रूप में JSON प्रतिनिधित्व लौटाता है।

JSON.stringify() -> Object To String.

JSON.parse (स्ट्रिंग) - एक अच्छी तरह से गठित JSON स्ट्रिंग लेता है और संबंधित जावास्क्रिप्ट ऑब्जेक्ट देता है।

JSON.parse() -> String To Object.

स्पष्टीकरण: JSON.stringify (obj [, replacer [, space]]));

प्रतिकृति / स्थान - वैकल्पिक या पूर्णांक मान लेता है या आप अंतराल प्रकार के रिटर्न फ़ंक्शन को कॉल कर सकते हैं।

function replacer(key, value) {
    if (typeof value === 'number' && !isFinite(value)) {
        return String(value);
    }
    return value;
}
  • गैर-परिमित जगह को शून्य से बदलने के लिए पुन: उपयोग करने वाले बस का उपयोग करें।
  • अंतरिक्ष द्वारा इंडेंटिंग जोंस स्ट्रिंग के लिए अंतरिक्ष उपयोग

4

वे एक दूसरे के पूर्ण विपरीत हैं।

JSON.parse()JSON के रूप में प्राप्त डेटा को पार्स करने के लिए उपयोग किया जाता है ; यह जावास्क्रिप्ट ऑब्जेक्ट में JSON स्ट्रिंग को डिसेर्बलाइज़ करता है

JSON.stringify()दूसरी तरफ किसी JSON स्ट्रिंग को ऑब्जेक्ट या एरे से बाहर बनाने के लिए उपयोग किया जाता है ; यह जावास्क्रिप्ट ऑब्जेक्ट को JSON स्ट्रिंग में क्रमबद्ध करता है


4

मुझे नहीं पता कि इसका उल्लेख किया गया है, लेकिन JSON.parse (JSON.stringify (myObject)) के उपयोगों में से एक मूल ऑब्जेक्ट का क्लोन बनाना है।

यह तब आसान होता है जब आप मूल ऑब्जेक्ट को प्रभावित किए बिना कुछ डेटा के साथ गड़बड़ करना चाहते हैं। संभवत: सबसे साफ / तेज तरीका नहीं है, लेकिन निश्चित रूप से उन वस्तुओं के लिए सबसे सरल है जो बड़े पैमाने पर जटिल नहीं हैं।


3

JSON.stringify(obj [, replacer [, space]]) - किसी भी क्रमबद्ध वस्तु को लेता है और एक स्ट्रिंग के रूप में JSON प्रतिनिधित्व लौटाता है।

JSON.parse(string) - एक अच्छी तरह से गठित JSON स्ट्रिंग लेता है और संबंधित जावास्क्रिप्ट ऑब्जेक्ट देता है।


3

वे एक-दूसरे का विरोध कर रहे हैं। JSON.Stringify()JSON को स्ट्रिंग में कनवर्ट करता है और JSON.Parse()JSON में एक स्ट्रिंग को पार्स करता है।


1

JSON: यह मुख्य रूप से सर्वर से / से डेटा का आदान-प्रदान करने के लिए उपयोग किया जाता है। JSON ऑब्जेक्ट को सर्वर पर भेजने से पहले, इसे एक स्ट्रिंग होना चाहिए।

JSON.stringify() //Converts the JSON object into the string representation.
var jsonData={"Name":"ABC","Dept":"Software"};// It is a JSON object
var jsonString=JSON.stringify(jsonData);// It is a string representation of the object
// jsonString === '{"Name":"ABC","Dept":"Software"}'; is true

यह जावास्क्रिप्ट सरणी को स्ट्रिंग में भी परिवर्तित करता है

var arrayObject=["ABC","Software"];// It is array object
var arrString=JSON.stringify(array);// It is string representation of the array (object)
// arrString === '["ABC","Software"]'; is true 

जब हम सर्वर से JSON डेटा प्राप्त करते हैं, तो डेटा स्ट्रिंग प्रारूप होगा। जब हम स्ट्रिंग को JSON ऑब्जेक्ट में बदलते हैं।

JSON.parse() //To convert the string into JSON object.
var data='{ "name":"ABC", "Dept":"Software"}'// it is a string (even though it looks like an object)
var JsonData= JSON.parse(data);// It is a JSON Object representation of the string.
// JsonData === { "name":"ABC", "Dept":"Software"}; is true

1

JSON.parse() स्ट्रिंग को ऑब्जेक्ट में बदलने के लिए उपयोग किया जाता है।
JSON.stringify()ऑब्जेक्ट को स्ट्रिंग में बदलने के लिए उपयोग किया जाता है।

आप इसे भी संदर्भित कर सकते हैं ...

<script type="text/javascript">

function ajax_get_json(){

    var hr = new XMLHttpRequest();
    hr.open("GET", "JSON/mylist.json", true);
    hr.setRequestHeader("Content-type", "application/json",true);
    hr.onreadystatechange = function() {
        if(hr.readyState == 4 && hr.status == 200) {
           /*  var return_data = hr.responseText; */

           var data=JSON.parse(hr.responseText);
           var status=document.getElementById("status");
           status.innerHTML = "";
           /* status.innerHTML=data.u1.country;  */
           for(var obj in data)
               {
               status.innerHTML+=data[obj].uname+" is in "+data[obj].country+"<br/>";
               }

        }
    }
    hr.send(null);
    status.innerHTML = "requesting...";
}
</script>

1

JSON.parse () एक JSON स्ट्रिंग लेता है और इसे एक जावास्क्रिप्ट ऑब्जेक्ट में बदल देता है।

JSON.stringify () जावास्क्रिप्ट ऑब्जेक्ट लेता है और इसे JSON स्ट्रिंग में बदल देता है।

const myObj = {
      name: 'bipon',
      age: 25,
      favoriteFood: 'fish curry'
};

 const myObjStr = JSON.stringify(myObj);

console.log(myObjStr);
// "{"name":"bipon","age":26,"favoriteFood":"fish curry"}"

console.log(JSON.parse(myObjStr));
 // Object {name:"bipon",age:26,favoriteFood:"fish curry"}
और यद्यपि तरीकों का आमतौर पर वस्तुओं पर उपयोग किया जाता है, उनका उपयोग सरणियों पर भी किया जा सकता है:
const myArr = ['simon', 'gomez', 'john'];

const myArrStr = JSON.stringify(myArr);

console.log(myArrStr);
// "["simon","gomez","john"]"

console.log(JSON.parse(myArrStr));
// ["simon","gomez","john"]
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.