JSON.stringify ve JSON.parse arasındaki fark


452

Bu iki ayrıştırma yöntemini ne zaman kullanacağım konusunda kafam karıştı.

Ben json_encoded verilerimi yankı ve ajax aracılığıyla geri almak sonra, ben sık sık ne zaman JSON.stringify ve JSON.parse kullanmanız gerektiği hakkında karışıklığa koşmak .

Ben olsun [object,object]benim de console.log dizgelenmiş zaman ayrıştırılır ve bir JavaScript nesne zaman.

$.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
Aşağıdaki cevapları özetlemek gerekirse: 1. Bunlar birbirlerinin tersidir. 2. birleştirilmiş verileri doğrulamak veya insan tarafından okunabilir hale getirmek için yardımcı olur json.stringify(json.parse(data)).
Hafenkranich

Yanıtlar:


674

JSON.stringify bir JavaScript nesnesini JSON metnine dönüştürür ve bu JSON metnini bir dizede saklar, örneğin:

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 bir JSON metni dizesini bir JavaScript nesnesine dönüştürür, örneğin:

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 (veri))? i kodda bu gördüm ... bu temelde json verileri nesneye dönüştürmek ve daha sonra tekrar json verilerine dönüştürme ..
HIRA THAKUR

29
@MESSIAH - Evet. Büyük ölçüde anlamsızdır, ancak JSON doğrulayıcısı olarak kullanılabilir.
Quentin

11
Nesne anahtarı değer eşleştirmeleri için basit bir nesne kopyası da kullanılabilir.
hunterc

4
Konsolda hata ayıklama için çok yararlı buldum - kolayca okunabilir hale getiriyor.
kirgy

2
@Quentin örnek yardımı ile açıklayabilir misiniz?
Pardeep Jain

57

JSON.parse()JSON olarak alınan bir şeyi "ayrıştırmak" içindir.
JSON.stringify()bir nesneden / diziden bir JSON dizesi oluşturmaktır.


4
duyarlık: bir nesne olmayabilir.
Denys Séguret

Doğru, bir dizi veya Javascript'in belirli bir tür olarak tanıdığı herhangi bir şey de olabilir. Sonuç olarak; alır ve uygun JSON eşdeğerine dönüştürür.
Bjorn 'Bjeaurn' S

2
@dystroy - Bir nesne olmalı (dizilerin nesne olduğunu belirterek).
Quentin

2
@quentinJSON.stringify(3)
Denys Séguret

@dystroy - ha, JSON parçalarıyla başa çıkmak için genişlettiklerinin farkında değildi . Bu kasıtsız.
Quentin

43

Bunlar birbirinin tersidir. JSON.stringify()bir JS nesnesini bir JSON dizesine JSON.parse()serileştirirken, bir JSON dizesini bir JS nesnesinin serisini kaldırır.


25

Bunlar birbirlerinin karşıtlarıdır.

JSON.stringify ()

JSON.stringify (), bir JS nesnesini veya değerini bir JSON dizesine serileştirir.

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 () yöntemi, bir dizeyi JSON olarak ayrıştırır ve isteğe bağlı olarak üretilen değeri dönüştürür.

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

7
Daha iyi bir isim için parse()olurdu objectify()ya jsonify().
nu everest

Neden JSON.toString () ve JSON.toObject () olmasın? Bu isimleri tercih ederim (özellikle intellisense kullanan yeni programcılar için yararlıdır).
Richard Chassereau


@nueverest jsonify()beri, belirsiz ve yanıltıcı olacağını parse()gelmez değil bir dönüştürmek Stringa JSON(budur tip jsonify()olur gösterir), ama parse()bir dönüştürür JSON biçimli String herhangi birine: Object, Array, Number, String, Booleanveya null. İnsanlar genellikle JSON "string temsilini" ve Object(veya dictPython, vb.) Karıştırırlar.
jbmusso

21

İlk olarak, JSON.stringify()işlev bir JavaScript değerini bir JavaScript Nesne Gösterimi (JSON) dizesine dönüştürür.JSON.parse()işlevi bir JavaScript Nesne Gösterimi (JSON) dizesini bir nesneye dönüştürür. Bu iki işlev hakkında daha fazla bilgi için lütfen aşağıdaki bağlantılara bakın.

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

İkinci olarak, aşağıdaki örnek bu iki işlevi anlamanız için yardımcı olacaktır.

<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));

// Çıktı şöyle olacaktır:

// Konsol için aşağıdaki gibi bir Dize:

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

// 2. Konsol için Bir Nesne:

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

6

JSON.stringify() Bir nesneyi dizeye dönüştürür.

JSON.parse() JSON dizesini bir nesneye dönüştürür.


2
"Eklenecek başka bir şey olmadığında değil, götürülecek hiçbir şey kalmadığında mükemmellik elde edilir." Antoine de Saint-Exupery
Ronnie Royston

6

Burada gerçek karışıklık ayrıştırmak vs stringify hakkında değil, bu databaşarı geri arama parametresinin veri türü hakkında .

data Ham yanıt, yani bir dize olabilir veya dokümantasyona göre bir JavaScript nesnesi olabilir:

başarı

Tür: Function (Anything data, String textStatus, jqXHR jqXHR) İstek başarılı olursa çağrılacak bir işlev. İşlev üç bağımsız değişkenden geçirilir: Sunucudan döndürülen, dataType parametresine veya belirtilmişse dataFilter geri arama işlevine göre biçimlendirilen veriler; <..>

Ve dataType varsayılan olarak 'akıllı tahmin' ayarını kullanır

dataType (varsayılan: Akıllı Tahmin (xml, json, script veya html))

Tür: String Sunucudan beklediğiniz veri türü. Hiçbiri belirtilmezse, jQuery yanıtın MIME türüne göre çıkarım yapmaya çalışır (XML MIME türü XML verir, 1.4 JSON'da bir JavaScript nesnesi verir, 1.4 komut dosyasında komut dosyası yürütülür ve başka her şey dize olarak döndürülür).


2
Bu çok yararlı bir ektir, çünkü karışıklığın ne hakkında olduğunu anlamaya yardımcı olur!
rmcsharry

4

JavaScript Nesnesi <-> JSON Dizesi


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

JSON.stringify (obj) - Serileştirilebilir herhangi bir nesneyi alır ve JSON temsilini bir dize olarak döndürür.

JSON.stringify() -> Object To String.

JSON.parse (string) - İyi biçimlendirilmiş bir JSON dizesi alır ve karşılık gelen JavaScript nesnesini döndürür.

JSON.parse() -> String To Object.

Açıklama: JSON.stringify (obj [, replacer [, space]]);

Replacer / Space - isteğe bağlı veya tamsayı değeri alır veya interger tipi dönüş işlevini çağırabilirsiniz.

function replacer(key, value) {
    if (typeof value === 'number' && !isFinite(value)) {
        return String(value);
    }
    return value;
}
  • Replacer Just Sonlu olmayan no'ları null ile değiştirmek için kullanın.
  • Uzay tarafından Json String'i girintilemek için alan kullanımı

4

Bunlar birbirlerinin tam tersidir.

JSON.parse()JSON olarak alınan verileri ayrıştırmak için kullanılır ; o deserializes bir JSON dizesi bir içine JavaScript nesnesi .

JSON.stringify()diğer yandan bir nesne veya diziden bir JSON dizesi oluşturmak için kullanılır ; o serializes bir JavaScript nesnesi bir içine JSON dize .


4

Belirtilmiş olup olmadığını bilmiyorum, ancak JSON.parse (JSON.stringify (myObject)) kullanımlarından biri orijinal nesnenin bir klonunu oluşturmaktır.

Bu, orijinal nesneyi etkilemeden bazı verilerle uğraşmak istediğinizde kullanışlıdır. Muhtemelen en temiz / en hızlı yol değil, kesinlikle büyük ölçüde karmaşık olmayan nesneler için en basit yol.


3

JSON.stringify(obj [, replacer [, space]]) - Serileştirilebilir herhangi bir nesneyi alır ve JSON temsilini bir dize olarak döndürür.

JSON.parse(string) - İyi biçimlendirilmiş bir JSON dizesi alır ve karşılık gelen JavaScript nesnesini döndürür.


3

Birbirlerine karşı çıkıyorlar. JSON.Stringify()JSON'u dizeye dönüştürür ve JSON.Parse()bir dizeyi JSON'a ayrıştırır.


1

JSON: Esas olarak sunucuya / sunucudan veri alışverişinde kullanılır. JSON nesnesini sunucuya göndermeden önce, bir dize olması gerekir.

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

Ayrıca Javascript dizisini dizeye dönüştürür

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 

Sunucudan JSON verisi aldığımızda, veriler dize biçiminde olur, bu nedenle dizeyi JSON nesnesine dönüştürürüz.

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() , String'i Object'e dönüştürmek için kullanılır.
JSON.stringify()Nesneyi Dizeye dönüştürmek için kullanılır.

Buna da başvurabilirsiniz ...

<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 () bir JSON dizesi alır ve bir JavaScript nesnesine dönüştürür.

JSON.stringify () bir JavaScript nesnesi alır ve onu bir JSON dizesine dönüştürür.

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"}
Yöntemler genellikle nesnelerde kullanılmasına rağmen, dizilerde de kullanılabilir:
const myArr = ['simon', 'gomez', 'john'];

const myArrStr = JSON.stringify(myArr);

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

console.log(JSON.parse(myArrStr));
// ["simon","gomez","john"]
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.