Perbedaan antara JSON.stringify dan JSON.parse

452

Saya bingung kapan harus menggunakan dua metode parsing ini.

Setelah saya echo data json_encoded saya dan mengambilnya kembali melalui ajax, saya sering mengalami kebingungan tentang kapan saya harus menggunakan JSON.stringify dan JSON.parse .

Saya masuk [object,object]ke console.log saya saat diuraikan dan objek JavaScript saat diketikkan.

$.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?
    }
});
THIRUR HIRA
sumber
1
Untuk meringkas jawaban di bawah ini: 1. Mereka adalah kebalikan dari satu sama lain. 2. dikombinasikan membantu untuk memvalidasi data atau mengubah dibaca manusia: json.stringify(json.parse(data)).
Hafenkranich

Jawaban:

674

JSON.stringify mengubah objek JavaScript menjadi teks JSON dan menyimpan teks JSON itu dalam sebuah string, misalnya:

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 mengubah string teks JSON menjadi objek JavaScript, misalnya:

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" 
Quentin
sumber
9
json.stringify (json.parse (data))? saya melihat ini dalam kode ... jadi ini pada dasarnya mengubah data json ke objek dan kemudian mengonversinya menjadi data json ..
HIRA THAKUR
29
@MESSIAH - Ya. Sebagian besar tidak ada gunanya, tetapi mungkin berfungsi sebagai validator JSON.
Quentin
11
Dapat juga digunakan salinan objek sederhana untuk pasangan nilai kunci objek.
pemburu
4
Saya merasa sangat berguna untuk debugging di konsol - membuatnya mudah dibaca.
Kirgy
2
@ Quentin dapat Anda jelaskan dengan bantuan contoh?
Pardeep Jain
57

JSON.parse()adalah untuk "parsing" sesuatu yang diterima sebagai JSON.
JSON.stringify()adalah membuat string JSON dari objek / array.

Bjorn 'Bjeaurn' S
sumber
4
presisi: mungkin bukan objek.
Denys Séguret
Benar, bisa juga berupa array atau apa pun yang diakui Javascript sebagai tipe tertentu. Garis bawah; dibutuhkan dan dikonversi ke setara JSON yang sesuai.
Bjorn 'Bjeaurn' S
2
@dystroy - Ini harus menjadi objek (mencatat bahwa array adalah objek).
Quentin
2
@quentinJSON.stringify(3)
Denys Séguret
@dystroy - ya, tidak menyadari bahwa mereka telah memperluas untuk menangani fragmen JSON . Itu tidak intuitif.
Quentin
43

Mereka adalah kebalikan dari satu sama lain. JSON.stringify()serialisasi objek JS menjadi string JSON, sedangkan JSON.parse()akan deserialize string JSON menjadi objek JS.

bluehallu
sumber
25

Mereka saling bertolak belakang.

JSON.stringify ()

JSON.stringify () membuat serialisasi objek atau nilai JS menjadi string 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 ()

Metode JSON.parse () mem-parsing string sebagai JSON, secara opsional mengubah nilai yang dihasilkan.

JSON.parse('{}');              // {}
JSON.parse('true');            // true
JSON.parse('"foo"');           // "foo"
JSON.parse('[1, 5, "false"]'); // [1, 5, "false"]
JSON.parse('null');            // null
Bhushan Gadekar
sumber
7
Nama yang lebih baik parse()adalah objectify()atau jsonify().
nu everest
Mengapa tidak JSON.toString () dan JSON.toObject ()? Saya lebih suka nama-nama ini (terutama berguna untuk programmer baru yang menggunakan intellisense).
Richard Chassereau
2
Anda dapat memposting developer.mozilla.org/en/docs/Web/JavaScript/Reference/… alih-alih menyalin
Mahi
@nueverest jsonify()akan ambigu dan menyesatkan, karena parse()tidak tidak mengkonversi Stringke JSONjenis (yang adalah apa yang jsonify()akan menunjukkan), tetapi parse()mengkonversi JSON-diformat String ke salah: Object, Array, Number, String, Booleanatau null. Orang sering mengacaukan "representasi string" JSON dan Object(atau dictdengan Python, dll.).
jbmusso
21

Pertama, JSON.stringify()fungsi mengonversi nilai JavaScript ke string JavaScript Object Notation (JSON). JSON.parse()function mengubah string Notasi Objek JavaScript (JSON) menjadi objek. Untuk informasi lebih lanjut tentang dua fungsi ini, silakan merujuk ke tautan berikut.

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

Kedua, sampel berikut akan membantu Anda untuk memahami kedua fungsi ini.

<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>
Mou
sumber
15
var log = { "page": window.location.href, 
        "item": "item", 
        "action": "action" };

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

// Keluarannya adalah:

// Untuk Konsol 1 adalah String Seperti:

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

// Untuk Konsol ke-2 adalah Object Like:

Object {
page   : window.location.href,  
item   : "item",
action : "action" }
raja neo
sumber
6

JSON.stringify() Mengubah objek menjadi string.

JSON.parse() Mengubah string JSON menjadi objek.

Hamed Kamrava
sumber
2
"Kesempurnaan tercapai, bukan ketika tidak ada lagi yang ditambahkan, tetapi ketika tidak ada lagi yang tersisa untuk diambil." Antoine de Saint-Exupery
Ronnie Royston
6

Kebingungan sebenarnya di sini bukan tentang parse vs stringify, ini tentang tipe data dari dataparameter callback sukses.

data dapat berupa respons mentah, yaitu string, atau dapat berupa objek JavaScript, sesuai dengan dokumentasi:

keberhasilan

Tipe: Fungsi (Data apa pun, String textStatus, jqXHR jqXHR) Suatu fungsi yang akan dipanggil jika permintaan berhasil. Fungsi melewati tiga argumen: Data dikembalikan dari server, diformat sesuai dengan parameter dataType atau fungsi panggilan balik dataFilter, jika ditentukan; <..>

Dan tipe data default ke pengaturan 'tebakan cerdas'

tipe data (default: Tebak Cerdas (xml, json, skrip, atau html))

Jenis: String Jenis data yang Anda harapkan kembali dari server. Jika tidak ada yang ditentukan, jQuery akan mencoba menyimpulkannya berdasarkan tipe respons MIME (tipe MIME XML akan menghasilkan XML, pada 1.4 JSON akan menghasilkan objek JavaScript, dalam 1.4 skrip akan mengeksekusi skrip, dan yang lainnya akan menjadi dikembalikan sebagai string).

Patrick
sumber
2
Ini adalah tambahan yang sangat berguna, karena membantu memahami apa arti semua kebingungan!
rmcsharry
4

Objek JavaScript <-> String JSON


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

JSON.stringify (obj) - Mengambil objek serializable apa pun dan mengembalikan representasi JSON sebagai string.

JSON.stringify() -> Object To String.

JSON.parse (string) - Mengambil string JSON yang terbentuk dengan baik dan mengembalikan objek JavaScript yang sesuai.

JSON.parse() -> String To Object.

Penjelasan: JSON.stringify (obj [, replacer [, space]]);

Replacer / Space - opsional atau mengambil nilai integer atau Anda dapat memanggil fungsi pengembalian tipe interger.

function replacer(key, value) {
    if (typeof value === 'number' && !isFinite(value)) {
        return String(value);
    }
    return value;
}
  • Replacer Cukup Gunakan untuk ganti tidak terbatas tidak dengan nol.
  • Ruang digunakan untuk indentasi Json String oleh ruang
Zigri2612
sumber
4

Mereka adalah kebalikan dari satu sama lain.

JSON.parse()digunakan untuk mem - parsing data yang diterima sebagai JSON ; itu deserializes sebuah tali JSON ke dalam objek JavaScript .

JSON.stringify()di sisi lain digunakan untuk membuat string JSON dari objek atau array ; itu serializes sebuah objek JavaScript ke dalam string yang JSON .

nyedidikeke
sumber
4

Saya tidak tahu apakah itu telah disebutkan, tetapi salah satu penggunaan JSON.parse (JSON.stringify (myObject)) adalah untuk membuat klon dari objek asli.

Ini berguna ketika Anda ingin mengacaukan beberapa data tanpa mempengaruhi objek asli. Mungkin bukan cara terbersih / tercepat tetapi tentu saja yang paling sederhana untuk objek yang tidak terlalu rumit.

P. Brown
sumber
3

JSON.stringify(obj [, replacer [, space]]) - Mengambil objek serializable dan mengembalikan representasi JSON sebagai string.

JSON.parse(string) - Mengambil string JSON yang terbentuk dengan baik dan mengembalikan objek JavaScript yang sesuai.

Gladson Robinson
sumber
3

Mereka saling menentang. JSON.Stringify()mengkonversi JSON ke string dan JSON.Parse()mem-parsing string ke JSON.

David Carmona
sumber
1

JSON: Ini terutama digunakan untuk bertukar data ke / dari server. Sebelum mengirim objek JSON ke server, itu harus berupa string.

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

Ini juga mengubah array Javascript menjadi string

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 

Ketika kami menerima data JSON dari server, data akan menjadi format string. Oleh karena itu kami mengubah string menjadi objek 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
Sheo Dayal Singh
sumber
1

JSON.parse() digunakan untuk mengkonversi String ke Object.
JSON.stringify()digunakan untuk mengonversi Object ke String.

Anda dapat merujuk ini juga ...

<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>
log priya
sumber
1

JSON.parse () mengambil string JSON dan mengubahnya menjadi objek JavaScript.

JSON.stringify () mengambil objek JavaScript dan mengubahnya menjadi string 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"}
Dan meskipun metode biasanya digunakan pada objek, mereka juga dapat digunakan pada array:
const myArr = ['simon', 'gomez', 'john'];

const myArrStr = JSON.stringify(myArr);

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

console.log(JSON.parse(myArrStr));
// ["simon","gomez","john"]
Bipon Biswas
sumber