JavaScript'te JSON dizesi nasıl oluşturulur?


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

}

Bunun gibi bir kodda, sadece etrafta oynamak için JSON dizesi oluşturmaya çalışıyorum. Hata fırlatıyor, ancak tüm adı, yaşı, evli olduğunu tek bir satıra (satır 2) koyarsam olmaz. Sorun ne?


Yanıtlar:


85

Javascript, Dizeleri birden çok satırda işlemez.

Bunları birleştirmeniz gerekecek:

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

Şablon değişmezlerini ES6 ve üzeri sürümlerde de kullanabilirsiniz: ( Belgeler için buraya bakın )

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

13
Veya hazır bilgideki her satırın sonuna bir \ koyun.
— Phrogz

3
Çok satırlı dizeler için tek veya çift tırnak yerine `(# 1 tuşunun solundaki geri tik karakteri) kullanabilirsiniz. Bunlara 'şablon değişmezleri' denir.
— Blue

5
Kesinlikle: bu cevaba razı olmayın ve diğerlerine bakın.
— AsTeR

1
Şablon değişmezleri ECMA Script 2015 Standardıdır. Bu soru ve cevap zaten 2012'den. Ama içinde düzenleyeceğim :)
— bardiir

Gerçekten mi? Sıfırdan dize birleştirme JSON oluşturmanın en iyi yolu mu? Diğer cevabın kabul edilen cevap olması gerektiğini düşünüyorum.
— rory.ap

270

Bunu yapma şeklim:

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

Sanırım bu yöntem hata olasılığını azaltabilir.


Ağaca derinlik vermek isteseniz kod nasıl görünürdü? İsim için olduğu gibi name.firstname ve name.lastname vermek istiyorum. Adı var olarak tanımlamam gerekir mi?
— Amir

62

JSON.stringify işlevi json nesnenizi bir dizeye dönüştürecektir:

var jsonAsString = JSON.stringify(obj);

Tarayıcının bunu uygulamaması durumunda (IE6 / IE7), JSON2.js komut dosyasını kullanın . Varsa yerel uygulamayı kullandığı için güvenlidir.


23

Bu oldukça kolay ve basit olabilir

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.


6

Sanırım bu yol size yardımcı oluyor ...

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

json dizgelerinde satır sonu olamaz. Sen hepsini bir satır etmesi gerekir: {"key":"val","key2":"val2",etc....}.

Ancak JSON dizelerini kendiniz oluşturmayın. Bunu sizin için yapan, en büyüğü jquery olan birçok kütüphane var .


8
JSON satır sonlarına sahip olabilir, ancak JavaScript dizesi değişmez sözdizimi olamaz.

evet, ancak anahtar / değer çiftleri arasında değil.
— Marc B

1
Sanırım, çıkış karaktersiz bir satırsonu karakteri ve JSON işaretlemesi içeremeyen JavaScript dizesi değişmez sözdizimi ile karıştırıyorsunuz. JSON işaretlemesi kesinlikle satır sonları içerebilir.

1
... sorunuzdaki kodu jsonlint.com'a yapıştırın (vb. olmadan tabii ki) . Doğrula'yı tıkladıktan sonra, güzel yazdırıldığında aslında yeni satırlar eklediğini göreceksiniz .
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.