2012-01-22 24 views
58
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. È un errore di lancio, ma se metto tutto il nome, età, sposato in una sola riga (linea 2) non lo fa. Qual è il problema?Come creare una stringa JSON in JavaScript?

+2

Vedere questo risponde http://stackoverflow.com/questions/3904269/convert- object-to-json-string – powtac

+0

'eval' è ** evil **. – candlejack

risposta

56

Javascript non gestisce le stringhe su più righe.

Sarà necessario per concatenare quelli:

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

è anche possibile utilizzare letterali template in ES6 e sopra: (See here for the documentation)

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

Oppure metti un \ alla fine di ogni riga nel letterale. – Phrogz

+1

Per le stringhe a più righe, anziché le virgolette singole o doppie, è possibile utilizzare '(carattere back-tick a sinistra del tasto # 1). Questi sono chiamati "modelli letterali". – Blue

+2

Decisamente: non accontentarti di questa risposta e guarda agli altri. – AsTeR

13

Uso JSON.stringify:

> JSON.stringify({ asd: 'bla' }); 
'{"asd":"bla"}' 
+1

Un buon consiglio, ma non mostra quale sia il problema. – Phrogz

+0

Vedere anche [json2.js] (https://github.com/douglascrockford/JSON-js) se è necessario supportare i browser più vecchi. – Douglas

+0

@Douglas è questo Douglas Crockford? Solo curioso??? – nepsdotin

-3

stringhe JSON non possono avere interruzioni di riga in loro. Dovresti fare tutto una riga: {"key":"val","key2":"val2",etc....}.

Ma non generare personalmente stringhe JSON. Ci sono un sacco di librerie che lo fanno per te, il più grande dei quali è jquery.

+6

JSON può avere interruzioni di riga, ma la sintassi letterale stringa JavaScript non può. –

+0

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

+1

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

58

La funzione JSON.stringify trasformerà l'oggetto JSON in una stringa:

Se il browser non lo implementa (IE6/IE7), utilizzare lo script JSON2.js. È sicuro poiché utilizza l'implementazione nativa, se esiste.

+1

Questa dovrebbe essere la risposta corretta – sandman

128

Il modo in cui lo faccio è:

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

Credo che in questo modo può ridurre le possibilità di errori.

+2

Questa dovrebbe essere la risposta perché è elegante. – Pred

5

penso che in questo modo si aiuta ...

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

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. 
Problemi correlati