Come creare una stringa JSON in 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 );

}

In un codice simile a questo, sto cercando di creare una stringa JSON solo per giocare. Sta generando un errore, ma se metto tutto il nome, l'età, sposato in una sola riga (riga 2) non lo fa. Qual è il problema?


Risposte:


85

Javascript non gestisce le stringhe su più righe.

Dovrai concatenare quelli:

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

Puoi anche usare i letterali modello in ES6 e versioni successive: ( Vedi qui per la documentazione )

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

13
Oppure metti una \ alla fine di ogni riga nel letterale.
Phrogz

3
Per le stringhe su più righe, invece di virgolette singole o doppie, è possibile utilizzare `(carattere back-tick. A sinistra del tasto # 1). Questi sono chiamati "letterali modello".
Blu

5
Sicuramente: non accontentarti di questa risposta e guarda alle altre.
AsTeR

I letterali modello sono ECMA Script 2015 Standard. Questa domanda e risposta è già del 2012. Ma lo modificherò in :)
bardiir

Veramente? La concatenazione di stringhe da zero è il modo migliore per creare JSON? Penso che l'altra risposta dovrebbe essere la risposta accettata.
rory.ap

264

Il modo in cui lo faccio è:

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

Immagino che questo modo possa ridurre le possibilità di errori.


62

La funzione JSON.stringify trasformerà il tuo oggetto json in una stringa:

var jsonAsString = JSON.stringify(obj);

Nel caso in cui il browser non lo implementa (IE6 / IE7), utilizzare lo script JSON2.js . È sicuro in quanto utilizza l'implementazione nativa, se esiste.


23

Questo può essere abbastanza facile e semplice

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

Penso che in questo modo ti aiuti ...

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

le stringhe json non possono contenere interruzioni di riga. Avresti per rendere il tutto una linea: {"key":"val","key2":"val2",etc....}.

Ma non generare da solo stringhe JSON. Ci sono molte biblioteche che lo fanno per te, la più grande delle quali è jquery .


8
JSON può avere interruzioni di riga, ma la sintassi letterale stringa JavaScript no.

internamente all'interno di una stringa, sì, ma non tra coppie chiave / valore.
Marc B

1
Penso che tu stia confondendo la sintassi letterale della stringa JavaScript che non può contenere un carattere di nuova riga senza caratteri di escape e il markup JSON. Il markup JSON può sicuramente contenere interruzioni di riga.

1
... incolla il codice nella tua domanda in jsonlint.com (senza ecc ... ovviamente) . Dopo aver fatto clic su Convalida, vedrai che in realtà inserisce nuove righe quando viene stampato correttamente.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.