Get to know MDN better
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
JavaScript Object Notation (JSON) は、構造化データを表現するための標準のテキストベースの形式で、 JavaScript のオブジェクト構文に基づいています。ウェブアプリケーションでデータを転送する場合によく使われます(例えば、複数のデータをサーバーからクライアントへ送信して、ウェブページ上に表示する場合などで、その逆もあります)。頻繁に見かけるデータ形式ですので、この記事では JavaScript を使用して JSON を扱うのに必要なすべてのこと、例えば JSON を解釈してその中のデータにアクセスしたり、 JSON を作成したりする方法を説明します。
| HTMLおよびCSS の基礎を理解し、これまでのレッスンで説明した JavaScript を把握していること。 |
|
JSON は JavaScript オブジェクトの構文に従ったテキストベースのデータ形式です。 構造化データを文字列として表現するため、ネットワーク経由でデータを送信する際に役立ちます。 JSON は JavaScript オブジェクトの構文に似ていますが、 JavaScript とは独立して扱うことができます。多くのプログラミング言語環境には JSON を読み取ったり(解釈したり)生成したりする機能があります。
JavaScript では、JSON の解釈と生成を行うメソッドが JSON オブジェクトで提供されています。
メモ: 文字列をネイティブオブジェクトへ変換することは「デシリアライズ」 (deserialization) と呼ばれており、ネイティブオブジェクトをネットワークを通して転送できように文字列へ変換することは「シリアライズ」 (serialization) と呼ばれています。
JSON 文字列はそれ自身をファイルとして格納することもできます。 .json という拡張子の付いたただのテキストファイルで、 MIME タイプは application/json です。
上で説明したように、JSON は JavaScript オブジェクトにとても似ている形式の文字列です。 次のものは、オブジェクトを表す有効な JSON 文字列です。 なお、これは有効な JavaScript のオブジェクトリテラルでもあります。ただし、いくつかの構文上の制限があります。
この JSON を JavaScript プログラムで文字列として読み込めば、通常のオブジェクトとして解釈し、JavaScript オブジェクトの基本の記事で説明したのと同じドット記法やブラケット記法を使って、その中のデータにアクセスすることができます。 例えば次のようになります。
重要なポイントは、JSON を扱うこと自体に特別なことは何もないということです。JSON を JavaScript のオブジェクトとして解釈した後は、同じオブジェクトリテラル構文を使って宣言されたオブジェクトとまったく同じように扱うことができます。
メモ: 上記の JSON は JSONTest.html で参照することができます(ページ内のソースコードを参照してください)。 ページを読み込んで見て、ブラウザーのコンソールで変数内のデータにアクセスしてみてください。
上記で、 JSON テキストは基本的に文字列に入った JavaScript オブジェクトのように見えることを説明しました。 配列を JSON との間で変換することもできます。例えば、次のものも有効な JSON です。
配列のアイテムにアクセスするには、(解釈済みのものの中で)配列のインデックスをまず指定します。例えば superHeroes[0].powers[0] のようにします。
JSON には単一のプリミティブ型を含めることもできます。たとえば、29、「Dan Jukes」、true はすべて有効な JSON です。
前述の通り、あらゆる JSON は有効な JavaScript リテラル(オブジェクト、配列、数値など)です。しかし、その逆は成り立ちません。すべての JavaScript オブジェクトリテラルが有効な JSON であるとは限りません。
カンマやコロンがたった一つでも間違った位置に置かれると、JSONファイルが無効になり、処理に失敗する原因となります。 利用しようとしているデータを注意して確認してください(プログラムに問題がない限り、コンピューターが生成した JSON の方が、エラーが含まれる可能性が低くなります)。 JSONLint や JSON-validate のようなアプリケーションを使って妥当性を検証をすることもできます。
メモ: このセクションを読み終えたところで、Scrimba の JSON review MDN 学習パートナー によるインタラクティブなチュートリアルも併せて活用してみてはいかがでしょうか。このチュートリアルでは、基本的なJSON構文や、ブラウザの開発者ツール内でJSONリクエストデータを表示する方法について、役立つガイダンスが提供されています。
それでは、ウェブサイト上でどのように JSON 形式のデータを使うことができるか例を通して見てみましょう。
まず、 heroes.html と style.css のコピーをローカルに作成してください。 後者は例題ページをスタイリングするための CSS であり、前者は簡単な HTML です。加えて、<script> 要素で、この演習で書く JavaScript コードを格納します。
JSON データは GitHub の https://mdn.github.io/learning-area/javascript/oojs/json/superheroes.json で利用できます。
この JSON をスクリプトに読み込んで、DOM 操作を使って次のように表示することにします。
最上位の関数はこんな感じです。
JSON を取得するには、フェッチという API を使用しています。 この API では、JavaScript を介してサーバーからリソースを取得するためのネットワークリクエストを行うことができます(画像、テキスト、JSON、HTML スニペットなど)。つまり、ページ全体を再読み込みしなくても、コンテンツの小さなセクションを更新できるのです。
この関数では、最初の 4 つの行でフェッチ API を使用して、サーバーから JSON を取得しています。
メモ: fetch() API は非同期です。非同期関数については次のモジュールでたくさん学びますが、今は、フェッチ API を使用する関数名の前にキーワード async、あらゆる非同期関数への呼び出し前にキーワード await が必要だということだけ言っておきます。
すべて完了すると、superHeroes 変数に JSON を基にした JavaScript オブジェクトが格納されます。最初のオブジェクトは <header> を正しいデータで満たし、2 つ目はチームの各ヒーローの情報カードを作成し、それを <section> に挿入しています。
ここまでで、JSON の取得と JavaScript オブジェクトへの変換ができました、先ほどの 2 つの関数を実装して使ってみましょう。まずはじめに、以下のコードをこれまでのコードの下に追加してください。
まず、h1 要素を createElement() で生成し、その textContent プロパティにそのオブジェクトの squadName プロパティを設定し、そしてそれを appendChild() で header に追加します。そして、段落についても同様に、要素を生成し、内容のテキストを設定し、 header に追加します。唯一の違いは、そのテキストがオブジェクトの homeTown と formed プロパティの両方を格納したテンプレートリテラルに設定されることです。
次に、以下の関数をコードの下へ追加してください。この関数はスーパーヒーローカードの作成と画面表示を行います。
始めに、JavaScript オブジェクトの members プロパティを新しい変数に保存します。この配列には複数のオブジェクトがあり、それぞれにヒーローについての情報が入ります。
次に、for...of ループを使って配列のそれぞれのオブジェクトを反復処理します。それぞれの次のようなことを行います。
メモ: 試してみるための例が上手く取得できなかった場合は、 heroes-finished.html ソースコードを参照してみてください(こちらでライブ実行もできます)。
メモ: もし、 JavaScript オブジェクトへのアクセスに使用しているドット/ブラケット記法がよく分からない場合は、 superheroes.json を別のタブやテキストエディターで開き、それを参照しながら JavaScript を読んでみるとよいでしょう。 また、ドット記法やブラケット記法の詳細については、 JavaScript オブジェクトの基本の記事を見返してみてください。
最後に、最上位の populate() 関数を呼び出す必要があります。
上記の例では、response.json() を使用してネットワークレスポンスを直接 JavaScript オブジェクトに変換しているので、JavaScript オブジェクトへのアクセスはシンプルでした。
しかし、時にはそれほど幸運ではないこともあります。生の JSON 文字列を受け取り、それを自分自身でオブジェクトに変換する必要がある場合もあります。また、 JavaScript のオブジェクトをネットワーク経由で送信したい場合、送信前に JSON (文字列)に変換する必要があります。幸い、この 2 つの問題はウェブ開発ではよくあることなので、ブラウザーでは組み込みの JSON オブジェクトが利用でき、それには以下の 2 つのメソッドが備わっています。
前者の動作例が heroes-finished-json-parse.html にあります(ソース を見て下さい)。ここでは以前に作成した例とまったく同じことをしていますが、次の部分が異なります。
コードの重要な部分は以下の通りです。
ご想像の通り、 stringify() はまったく反対の向きに動作します。次のコードをブラウザーの JavaScript コンソールに一つずつ打ち込んでいって、実際に動かしてみて下さい。
ここでは、JavaScript オブジェクトを作成し、その内容を確認した後、stringify() を使用して JSON 文字列に変換し、その返値を新しい変数に格納し、さらに再度確認しています。
この記事では、プログラム内で、JSON を生成する、JSON を解釈する、JSON データを参照するなど、JSON を扱う方法について簡単に説明しました。次の記事では、これらの情報をどれだけ理解し、身についたかを確認するためのテストをいくつかご紹介します。
This page was last modified on 2026年3月27日 by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.