JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptのJSON.parse()関数とは?使い方をサンプル付きで解説

JSON.parse() は、JSON形式の文字列を受け取り、そのテキストをもとにJavaScriptのオブジェクトを生成して返す組み込み関数です。Web APIから取得したデータやサーバーとの通信で受け取ったJSON文字列を、プログラム内で扱いやすいオブジェクトへ変換する際に広く利用されています。

構文

JSON.parse() の基本的な構文は以下のとおりです。

JSON.parse(text[, reviver])

引数

  • text:解析対象となるJSON形式の文字列を指定します。
  • reviver(省略可):変換後の値を加工するためのコールバック関数です。指定すると、オブジェクト化される前に各プロパティに対して処理を実行できます。

サンプルコード

以下は、JSON文字列を JSON.parse() で解析し、オブジェクトのプロパティとして画面に出力する例です。

<html>
<head>
   <title>JavaScript Example</title>
</head>
<body>
   <script type="text/javascript">
      var jsonSample = '{"Tutorial": "Java", "Version":8 }';
      jsonObj = JSON.parse(jsonSample);
      document.write("Tutorial Name: " + jsonObj.Tutorial);
      document.write("<br>");
      document.write("Tutorial Version: " + jsonObj.Version);
   </script>
</body>
</html>

コードのポイント

  • 変数 jsonSample には、キーと値を持つJSON形式の文字列が格納されています。
  • JSON.parse(jsonSample) を呼び出すことで、この文字列がJavaScriptオブジェクトへと変換され、jsonObj に代入されます。
  • 変換後は、jsonObj.TutorialjsonObj.Version のように、通常のオブジェクトと同じ方法で各プロパティにアクセスできます。

実行結果

Tutorial Name: Java
Tutorial Version: 8

補足:エラーへの注意点

渡された文字列が正しいJSON形式でない場合、JSON.parse()SyntaxError をスローします。そのため、外部から取得した信頼性の低いデータを扱う際は、try...catch 構文でエラーを捕捉し、適切なフォールバック処理を行うことが推奨されます。

try {
  var obj = JSON.parse(invalidJson);
} catch (e) {
  console.log("JSONの解析に失敗しました: " + e.message);
}

また、逆にJavaScriptのオブジェクトをJSON文字列に変換したい場合は、JSON.stringify() 関数を使用します。JSON.parse()JSON.stringify() は対になる関係にあるため、セットで覚えておくと便利です。

  1. JavaScriptの関数プロトタイプとは?仕組みと使い方を解説

    JavaScriptで作成されたすべての関数には、JavaScriptエンジンによって自動的にprototypeプロパティが追加されます。このprototypeプロパティはオブジェクトであり、デフォルトではconstructorプロパティを含んでいます。関数のプロトタイプには、以下のようにしてアクセスできます。functionName.prototypeコンストラクタ関数を使ってオブジェクトを生成する場合、このprototypeプロパティを活用することで、同じコンストラクタから作成された複数のオブジェクト間でメソッドやプロパティを効率的に共有することができます。これにより、各インスタンスごとに

  2. JavaScriptでのメソッド借用:call()・apply()・bind()の使い方を解説

    JavaScriptでは、call()、apply()、bind()という3つのメソッドを使うことで、あるオブジェクトが持つメソッドを別のオブジェクトが「借用」できます。これは、本来そのメソッドを持たないオブジェクトに対して、thisの参照先を差し替えてメソッドを実行できる便利なテクニックです。 3つのメソッドの違い call():引数をカンマ区切りで個別に渡し、即座に関数を実行します。 apply():引数を配列(または配列風オブジェクト)として渡し、即座に関数を実行します。 bind():thisを固定した新しい関数を返すだけで、即座には実行されません。返された関数は後から好きなタイミン