Bagaimana cara membuat string JSON di JavaScript?


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

}

Dalam kode seperti ini, saya mencoba membuat string JSON hanya untuk dimainkan. Itu adalah kesalahan melempar, tetapi jika saya memasukkan semua nama, usia, menikah dalam satu baris (baris 2) tidak. Apa masalahnya?


Jawaban:


85

Javascript tidak menangani String di beberapa baris.

Anda perlu menggabungkannya:

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

Anda juga dapat menggunakan literal template di ES6 dan di atasnya: ( Lihat di sini untuk dokumentasi )

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

13
Atau letakkan \ di akhir setiap baris secara literal.
Phrogz

3
Untuk string multibaris, sebagai ganti tanda kutip tunggal atau ganda, Anda dapat menggunakan `(karakter centang mundur di sebelah kiri tombol # 1). Ini disebut 'template literals'.
Biru

5
Pasti: jangan puas dengan jawaban ini dan lihat yang lain.
AsTeR

Literal template adalah ECMA Script 2015 Standard. Tanya jawab ini sudah dari tahun 2012. Tapi saya akan mengeditnya di :)
bardiir

Betulkah? Penggabungan string dari awal adalah cara terbaik untuk membangun JSON? Saya pikir jawaban lain harus menjadi jawaban yang diterima.
rory.ap

265

Cara saya melakukannya adalah:

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

Saya rasa cara ini bisa mengurangi peluang terjadinya kesalahan.


62

Fungsi JSON.stringify akan mengubah objek json Anda menjadi string:

var jsonAsString = JSON.stringify(obj);

Jika browser tidak menerapkannya (IE6 / IE7), gunakan skrip JSON2.js . Aman karena menggunakan implementasi asli jika ada.


23

Ini bisa sangat mudah dan sederhana

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.


5

Saya pikir cara ini membantu Anda ...

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

string json tidak boleh memiliki jeda baris di dalamnya. Anda harus membuat semuanya menjadi satu baris:{"key":"val","key2":"val2",etc....} .

Tapi jangan buat sendiri string JSON. Ada banyak perpustakaan yang melakukannya untuk Anda, yang terbesar adalah jquery .


8
JSON dapat memiliki jeda baris, tetapi sintaks literal string JavaScript tidak bisa.

secara selingan dalam string, ya, tapi tidak di antara pasangan kunci / nilai.
Marc B

1
Saya pikir Anda bingung dengan sintaks literal string JavaScript yang tidak dapat berisi karakter baris baru yang tidak lolos, dan markup JSON. Markup JSON pasti dapat berisi jeda baris.

1
... sisipkan kode dalam pertanyaan Anda ke jsonlint.com (tanpa dll .... tentu saja) . Setelah mengklik Validasi, Anda akan melihat bahwa itu benar-benar menyisipkan baris baru saat dicetak dengan cantik.
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.