2012-01-22 8 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); 

} 

このようなコードで、私はJSON文字列を作成しようとしています。それはエラーを投げているが、私はすべての名前、年齢、結婚して1つの単一の行(2行目)にしない場合。どうしたの?JavaScriptでJSON文字列を作成するには?

+2

が、これはhttp://stackoverflow.com/questions/3904269/convert-答えてください...この方法はあなたを助けだと思いますオブジェクトからjsonの文字列 – powtac

+0

'eval'は**悪**です。 – candlejack

答えて

56

Javascriptでは、複数の行にわたる文字列を処理しません。

あなたはそれらを連結する必要があります。

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

あなたはまた、ES6にし、上記のテンプレートリテラルを使用することができます(See here for the documentation

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

または、リテラルの各行の最後に\を付けます。 – Phrogz

+1

複数行の文字列の場合は、一重引用符や二重引用符ではなく、 '(1桁目の左に半角文字)を使用できます。これらを「テンプレートリテラル」といいます。 – Blue

+2

間違いなく、この回答を解決して他の人に尋ねないでください。 – AsTeR

13

使用JSON.stringify

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

良いアドバイスはありますが、問題の内容は表示されません。 – Phrogz

+0

古いブラウザをサポートする必要がある場合は、[json2.js](https://github.com/douglascrockford/JSON-js)も参照してください。 – Douglas

+0

@DouglasはDouglas Crockfordですか?ちょっと興味があるんだけど??? – nepsdotin

-3

JSON文字列は、それらの中に改行を持つことができません。あなたはそれをすべて1行にする必要があります:{"key":"val","key2":"val2",etc....}

しかし、自分でJSON文字列を生成しないでください。あなたのためにそれを行うライブラリがたくさんありますが、最大のものはjqueryです。

+6

JSONに改行を付けることはできますが、JavaScriptの文字列リテラル構文ではできません。文字列内の中間には –

+0

がありますが、キーと値のペアの間にはありません。 –

+1

あなたは、エスケープされていない改行文字とJSONマークアップを含むことができないJavaScript文字列リテラル構文を混乱させていると思います。 JSONマークアップには改行が含まれることが最も確実です。 –

58

関数JSON.stringifyは、jsonオブジェクトを文字列に変換します。

var jsonAsString = JSON.stringify(obj); 

ブラウザがIE6/IE7を実装していない場合は、JSON2.jsスクリプトを使用してください。存在する場合はネイティブ実装を使用するので安全です。

+1

それは正しい答えでなければなりません – sandman

128

私はそれを行う方法がある:私はこの方法は、エラーの可能性を減らすことができますね

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

+2

これは、そのエレガントなので、答えが必要です。 – Pred

5

は私が

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

これはかなり簡単にすることができますし、簡単な

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. 
関連する問題