Pertanyaan Parse JSON di JavaScript? [duplikat]


Pertanyaan ini sudah memiliki jawaban di sini:

Saya ingin mem-parse string JSON di JavaScript. Tanggapannya seperti ini

var response = '{"result":true,"count":1}';

Bagaimana saya bisa mendapatkan nilainya result dan count dari ini?


1509
2018-02-08 16:34


asal


Jawaban:


Sebagian besar browser mendukung JSON.parse(), yang didefinisikan dalam ECMA-262 5th Edition (spesifikasi yang didasarkan pada JavaScript). Penggunaannya sederhana:

var json = '{"result":true,"count":1}',
    obj = JSON.parse(json);

alert(obj.count);

Untuk browser yang tidak Anda dapat menerapkannya menggunakan json2.js.

Seperti tercantum dalam komentar, jika Anda sudah menggunakan jQuery, ada a $.parseJSON fungsi yang memetakan ke JSON.parse jika tersedia atau bentuk eval di browser lama. Namun, ini melakukan pemeriksaan tambahan yang tidak perlu yang juga dilakukan oleh JSON.parse, jadi untuk performa terbaik, saya sarankan untuk menggunakannya seperti ini:

var json = '{"result":true,"count":1}',
    obj = JSON && JSON.parse(json) || $.parseJSON(json);

Ini akan memastikan Anda menggunakan asli JSON.parse segera, daripada memiliki jQuery melakukan pemeriksaan kewarasan pada string sebelum meneruskannya ke fungsi parsing asli.


1863
2018-02-08 16:38



Pertama-tama, Anda harus memastikan bahwa kode JSON valid.

Setelah itu, saya akan merekomendasikan menggunakan pustaka JavaScript seperti jQuery atau Prototype jika Anda bisa karena hal-hal ini ditangani dengan baik di pustaka tersebut.

Di sisi lain, jika Anda tidak ingin menggunakan perpustakaan dan Anda dapat menjamin validitas objek JSON, saya hanya akan membungkus string dalam fungsi anonim dan menggunakan fungsi eval.

Ini tidak disarankan jika Anda mendapatkan objek JSON dari sumber lain yang tidak benar-benar dipercaya karena fungsi eval memungkinkan untuk kode pemberontak jika Anda mau.

Berikut ini contoh penggunaan fungsi eval:

var strJSON = '{"result":true,"count":1}';
var objJSON = eval("(function(){return " + strJSON + ";})()");
alert(objJSON.result);
alert(objJSON.count);

Jika Anda mengontrol browser apa yang digunakan atau Anda tidak mengkhawatirkan orang-orang dengan browser yang lebih lama, Anda selalu dapat menggunakan metode JSON.parse.

Ini benar-benar solusi ideal untuk masa depan.


91
2018-02-08 16:46



Jika Anda mendapatkan ini dari situs luar, mungkin berguna untuk menggunakan getJSON jQuery. Jika ini daftar, Anda dapat mengulangnya dengan $ .each

$.getJSON(url, function (json) {
    alert(json.result);
    $.each(json.list, function (i, fb) {
        alert(fb.result);
    });
});

49
2017-07-18 21:57



Jika ingin digunakan JSON 3 untuk browser yang lebih lama, Anda dapat memuatnya secara kondisional dengan:

<script>
    window.JSON || 
    document.write('<script src="//cdnjs.cloudflare.com/ajax/libs/json3/3.2.4/json3.min.js"><\/scr'+'ipt>');
</script>

Sekarang standarnya window.JSON objek tersedia untuk Anda, apa pun browser yang dijalankan klien.


32
2018-04-19 18:52



Contoh berikut akan memperjelas:

var jsontext   = '{"name":"x","age":"11"}';
var getContact = JSON.parse(jsontext);
document.write(getContact.name + ", " + getContact.age);

// Output: x, 11

ATAU

Anda juga bisa menggunakan eval fungsi. Contoh berikut menggunakan eval fungsi:

var jsontext   = '{"name":"x","age":"11"}';
var getContact = eval('(' + jsontext + ')');
document.write(getContact.name + ", " + getContact.age);

// Output: x, 11

Sejak itu JSON.parse berfungsi lebih aman dan mengeksekusi lebih cepat dari fungsi eval, saya sarankan Anda untuk menggunakannya JSON.parse fungsi.


31
2017-10-01 07:42



Jika Anda meneruskan variabel string (string JSON yang terbentuk dengan baik) ke JSON.parse dari MVC @Viewbag yang memiliki tanda kutip ganda, '"', sebagai tanda kutip, Anda perlu memprosesnya sebelum JSON.parse (jsonstring)

    var jsonstring = '@ViewBag.jsonstring';
    jsonstring = jsonstring.replace(/&quot;/g, '"');  

25
2017-10-22 15:06



Anda dapat menggunakan fungsi eval seperti dalam beberapa jawaban lainnya. (Jangan lupa kawat gigi tambahan.) Anda akan tahu mengapa ketika Anda menggali lebih dalam), atau cukup gunakan fungsi jQuery parseJSON:

var response = '{"result":true , "count":1}'; 
var parsedJSON = $.parseJSON(response);

ATAU

Anda dapat menggunakan kode di bawah ini.

var response = '{"result":true , "count":1}';
var jsonObject = JSON.parse(response);

Dan Anda dapat mengakses bidang menggunakan jsonObject.result dan jsonObject.count.


24
2018-06-06 03:51



Cara termudah menggunakan parse() metode:

var response = '{"a":true,"b":1}';
var JsonObject= JSON.parse(response);

ini adalah contoh cara mendapatkan nilai:

var myResponseResult = JsonObject.a;
var myResponseCount = JsonObject.b;

23
2018-06-04 14:44



Tanpa menggunakan perpustakaan yang bisa Anda gunakan eval - satu-satunya waktu yang harus Anda gunakan. Lebih aman menggunakan perpustakaan.

misalnya...

var response = '{"result":true , "count":1}';

var parsedJSON = eval('('+response+')');

var result=parsedJSON.result;
var count=parsedJSON.count;

alert('result:'+result+' count:'+count);

19
2018-02-08 16:45



JSON.parse () mengonversi semua JSON String yang dilewatkan ke dalam fungsi, ke objek JSON.

Untuk pemahaman yang lebih baik, tekan F12 untuk membuka Elemen Inspeksi browser Anda, dan pergi ke konsol untuk menulis perintah berikut:

var response = '{"result":true,"count":1}'; // Sample JSON object (string form)
JSON.parse(response); // Converts passed string to a JSON object.

Sekarang jalankan perintah:

console.log(JSON.parse(response));

Anda akan mendapatkan output sebagai Object {result: true, count: 1}.

Untuk menggunakan objek itu, Anda dapat menetapkannya ke variabel, katakanlah obj:

var obj = JSON.parse(response);

Sekarang dengan menggunakan obj dan operator titik (.) Anda dapat mengakses properti dari Objek JSON.

Coba jalankan perintah

console.log(obj.result);

19
2018-02-18 10:08