1. ホーム
  2. javascript

[解決済み] JavaScriptでJSON文字列を作成するには?

2022-10-20 22:11:52

質問

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を作成する方法について、最良の方法に従って回答するものではありません。この回答は主に、"何が問題なのか、または上記のコードが動作しない理由、つまり JavaScript での間違った文字列連結の試みに取り組むものであり、そもそも文字列連結が JSON 文字列を作成する非常に悪い方法である理由には取り組みません。

JSONを作成する最良の方法については、こちらを参照してください。 https://stackoverflow.com/a/13488998/1127761

この回答を読むと、上記のコードサンプルがなぜ動作しないのかがわかります。

Javascriptは複数行に渡る文字列を扱うことができません。

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

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

ES6 以降ではテンプレート・リテラルを使うこともできます: ( ドキュメントはこちらをご覧ください )

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