カテゴリ: JavaScript 更新日: 2026/07/02

JavaScriptのJSON操作で発生するエラーと対処法を初心者向けに徹底解説

JavaScriptのJSON操作で発生しがちなエラーと対処法
JavaScriptのJSON操作で発生しがちなエラーと対処法

先生と生徒の会話形式で理解しよう

生徒

「先生、JavaScriptでJSONを扱っているとよくエラーが出るんですけど、どうしてですか?」

先生

「JSONは文字列とJavaScriptのオブジェクトの間で変換する時に注意が必要です。少しの書き方の間違いでもエラーが発生します。」

生徒

「具体的にはどんなエラーが多いんですか?」

先生

「代表的なのはSyntaxErrorTypeErrorです。これらはJSON文字列の形式が正しくない場合や、オブジェクトに変換できない場合に発生します。」

生徒

「なるほど。それを防ぐにはどうすればいいですか?」

先生

「では、順番に具体的な対処法を見ていきましょう!」

1. JSON.parseでよくあるSyntaxErrorの原因と対策

1. JSON.parseでよくあるSyntaxErrorの原因と対策
1. JSON.parseでよくあるSyntaxErrorの原因と対策

JSON文字列をJavaScriptのオブジェクトに変換する際に使うのがJSON.parse()です。文字列の形式が間違っているとSyntaxErrorが発生します。例えば、キーをダブルクオートで囲っていない場合です。


const jsonStr = '{name: "Taro"}'; // 間違い
const obj = JSON.parse(jsonStr); // SyntaxError

正しくはキーも値もダブルクオートで囲む必要があります。


const jsonStr = '{"name": "Taro"}'; // 正しい
const obj = JSON.parse(jsonStr);
console.log(obj.name); // Taro

2. JSON.stringifyでTypeErrorが発生する場合

2. JSON.stringifyでTypeErrorが発生する場合
2. JSON.stringifyでTypeErrorが発生する場合

JavaScriptのオブジェクトをJSON文字列に変換するJSON.stringify()でもエラーが起こることがあります。循環参照があるオブジェクトではTypeErrorになります。


const obj = {};
obj.self = obj; // 循環参照
JSON.stringify(obj); // TypeError: Converting circular structure to JSON

対策として、循環参照を取り除くか、replacer関数を使って除外します。


const obj = {name: "Taro"};
obj.self = undefined; // 循環を避ける
const jsonStr = JSON.stringify(obj);
console.log(jsonStr); // {"name":"Taro"}

3. JSONに変換できないデータ型に注意

3. JSONに変換できないデータ型に注意
3. JSONに変換できないデータ型に注意

JSONは文字列、数値、配列、オブジェクト、true/false/nullのみ対応しています。関数やundefinedを含むオブジェクトは変換されません。


const obj = {name: "Taro", greet: function(){ console.log("Hi"); }};
const jsonStr = JSON.stringify(obj);
console.log(jsonStr); // {"name":"Taro"} greetプロパティは無視される

関数を含める場合は、手動で文字列化するかJSONに含めないように設計します。

4. JSON.parseで空文字やnullを扱う注意点

4. JSON.parseで空文字やnullを扱う注意点
4. JSON.parseで空文字やnullを扱う注意点

空文字やnullJSON.parse()で解析するとエラーになります。必ず事前にチェックしましょう。


const jsonStr = ""; // 空文字
if(jsonStr) {
  const obj = JSON.parse(jsonStr);
} else {
  console.log("JSON文字列が空です");
}

安全に解析するには条件分岐やtry-catchを使うのがおすすめです。

5. try-catchでJSONエラーを安全に処理する

5. try-catchでJSONエラーを安全に処理する
5. try-catchでJSONエラーを安全に処理する

JSON操作ではtry-catchでエラー処理をするのが基本です。これによりエラーで処理が止まるのを防げます。


const jsonStr = '{"name": "Taro"}';
try {
  const obj = JSON.parse(jsonStr);
  console.log(obj.name);
} catch (e) {
  console.error("JSON解析に失敗しました", e);
}

6. 配列を含むJSONの注意点

6. 配列を含むJSONの注意点
6. 配列を含むJSONの注意点

JSONに配列を含める場合も、要素がJSON対応か確認しましょう。未定義や関数が入ると無視されたりエラーになる場合があります。


const arr = [1, 2, undefined, function(){}];
const jsonStr = JSON.stringify(arr);
console.log(jsonStr); // [1,2,null,null]

配列のデータはすべてJSONに変換可能か事前に確認するのが安全です。

7. ネストしたJSONの解析でよくあるエラー

7. ネストしたJSONの解析でよくあるエラー
7. ネストしたJSONの解析でよくあるエラー

JSONの中にオブジェクトや配列がネストしている場合、存在しないプロパティにアクセスするとTypeErrorになります。


const jsonStr = '{"user":{"name":"Taro"}}';
const obj = JSON.parse(jsonStr);
console.log(obj.user.age); // undefined
console.log(obj.user.age.toString()); // TypeError

安全にアクセスするにはオプショナルチェイニング(?.)を使いましょう。


console.log(obj.user.age?.toString()); // undefined でエラーにならない

8. 外部APIのJSONを扱うときの注意点

8. 外部APIのJSONを扱うときの注意点
8. 外部APIのJSONを扱うときの注意点

外部APIから取得するJSONは形式が保証されていないことがあります。必ずtry-catchや型チェックを行いましょう。


fetch('https://api.example.com/data')
  .then(res => res.json())
  .then(data => {
    console.log(data?.items?.length ?? 0); // 安全にアクセス
  })
  .catch(e => console.error("APIからのJSON取得に失敗", e));

9. JSON操作の基本ルールまとめ

9. JSON操作の基本ルールまとめ
9. JSON操作の基本ルールまとめ
  • JSON文字列は必ずキーと文字列値をダブルクオートで囲む
  • 循環参照や関数、undefinedはJSONに変換できない
  • JSON.parse()は必ずtry-catchで安全に処理する
  • ネストや配列の要素もJSON対応か確認する
  • 外部APIのJSONも必ず安全チェックする

これらの基本ルールを守ることで、JavaScriptのJSON操作で発生するエラーを最小限にできます。

まとめ

まとめ
まとめ

JavaScriptでJSONを扱う際には、正しい形式とデータ型の理解が非常に重要です。まず、JSON.parse()を使って文字列をオブジェクトに変換する場合、キーや文字列値は必ずダブルクオートで囲む必要があります。形式が少しでも崩れるとSyntaxErrorが発生します。また、JSON.stringify()でオブジェクトを文字列化する際には、循環参照や関数、undefinedなどJSONに変換できないデータ型が含まれているとTypeErrorや想定外の出力になるため注意が必要です。さらに、空文字やnullの扱いにも注意し、解析前に必ず値の存在を確認することが重要です。安全にJSONを扱うためにはtry-catchを使った例外処理が基本であり、ネストされたオブジェクトや配列の場合にはオプショナルチェイニング(?.)や条件チェックを活用してエラーを防ぎます。外部APIから取得するJSONも、形式が保証されないことが多いため、必ず型チェックや存在確認を行うことで、アプリケーションの安定性を保つことができます。

実際のプログラム例として、JSON文字列の安全な解析とオブジェクトのアクセスを確認してみましょう。


const jsonStr = '{"user":{"name":"Taro"}}';
try {
    const obj = JSON.parse(jsonStr);
    // ネストしたプロパティへの安全なアクセス
    console.log(obj.user?.name); // Taro
    console.log(obj.user?.age?.toString() ?? "年齢情報はありません"); // 年齢情報はありません
} catch(e) {
    console.error("JSON解析に失敗しました", e);
}

この例では、try-catchで解析エラーを防ぎつつ、オプショナルチェイニングとnull合体演算子(??)を使ってネストしたプロパティへのアクセスを安全に行っています。また、JSONに含まれる配列や外部APIからのデータにも同様の安全チェックを適用することで、予期せぬエラーを最小限に抑えることが可能です。JSONの基本ルールを守ること、データ型や形式を正しく理解すること、そして例外処理や条件分岐を適切に組み合わせることが、初心者でも安心してJSONを扱うための重要なポイントです。

先生と生徒の振り返り会話

生徒

「先生、今回学んだJSON操作の注意点を整理すると、どのポイントが一番重要ですか?」

先生

「大事なのはまず、JSONの形式とデータ型を正しく理解することです。キーや文字列はダブルクオートで囲む、関数やundefinedはJSONに変換できない、といった基本ルールを守ることが基本です。」

生徒

「なるほど。あとtry-catchでエラーを防ぐことも大切ですよね?」

先生

「その通りです。JSON.parse()や外部APIのデータを扱うときは必ずtry-catchで安全に処理すること。そして、ネストしたオブジェクトや配列はオプショナルチェイニングや条件分岐を使って存在確認を行うことが重要です。」

生徒

「空文字やnullの扱いも注意する必要があるんですね。」

先生

「そうです。事前に空文字かどうかチェックしたり、nullの場合の処理を組み込むことで、予期せぬエラーを防ぐことができます。これらの基本を理解しておけば、初心者でも安心してJSONを安全に操作できます。」

生徒

「ありがとうございました。これでエラーが出ても落ち着いて対応できそうです!」

カテゴリの一覧へ
新着記事
New1
JavaScript
JavaScriptのスコープとは?ローカル変数・グローバル変数の違いと使い分け
New2
TypeScript
TypeScriptで型の合成時に発生する型エラーの対処法を徹底解説!初心者にもわかりやすく解説
New3
TypeScript
TypeScriptでAPI呼び出しをラップするユーティリティ関数の設計完全ガイド!初心者向けにAxiosやFetchの使い方を解説
New4
TypeScript
TypeScriptのMapped Typesとインターフェースの連携方法を徹底解説!初心者でも理解できる型変換の基本
人気記事
No.1
Java&Spring記事人気No1
JavaScript
JavaScriptのループで無限ループが起きる原因と対策を初心者向けに徹底解説!
No.2
Java&Spring記事人気No2
JavaScript
JavaScriptのインストール方法まとめ!Windows・Mac・Linux別にステップ解説
No.3
Java&Spring記事人気No3
JavaScript
JavaScriptの文字列の長さを取得する(lengthプロパティ)
No.4
Java&Spring記事人気No4
TypeScript
TypeScriptのファイル分割とimport/exportの基本を徹底解説!初心者でも安心のやさしい入門
No.5
Java&Spring記事人気No5
TypeScript
TypeScriptでコメントを書く正しい書き方と使い分け【初心者向けにやさしく解説】
No.6
Java&Spring記事人気No6
JavaScript
JavaScriptのプリミティブ型と参照型の違いを初心者向けに解説
No.7
Java&Spring記事人気No7
TypeScript
TypeScriptの始め方:開発環境の構築手順【初心者向け】
No.8
Java&Spring記事人気No8
TypeScript
TypeScriptでパスエイリアスを設定する方法!baseUrlとpathsでコードをスッキリ整理