【JavaScript】JSONの概要
JSONとは何か
JSON(JavaScript Object Notation)は、軽量なデータ交換フォーマットです。人間にも読みやすく、コンピュータでの解析や生成が容易であるため、広く使用されています。JSONは、特にWebアプリケーションにおいて、クライアントとサーバー間でデータをやり取りする際によく利用されます。
たとえば、次のようなシンプルなJSON形式のデータがあります:
{
"name": "太郎",
"age": 25,
"skills": ["JavaScript", "Python", "HTML"]
}
JSONの基本構造
JSONは、キーと値のペアをカンマで区切る構造を持っています。キーは常にダブルクォートで囲まれた文字列で、値には次のいずれかを指定できます:
- 文字列(ダブルクォートで囲む)
- 数値(整数または浮動小数点数)
- 真偽値(
true
またはfalse
) - 配列
- オブジェクト
null
例:
{
"id": 101,
"name": "花子",
"isStudent": true,
"grades": [85, 90, 88],
"address": {
"city": "東京",
"postalCode": "100-0001"
},
"notes": null
}
JSON文字列をJavaScriptで解析する
JSON文字列をJavaScriptオブジェクトに変換するには、JSON.parse()
メソッドを使用します。
例:
const jsonString = '{"name":"太郎","age":25}';
const obj = JSON.parse(jsonString);
console.log(obj.name); // 太郎
console.log(obj.age); // 25
JSON.parse()
は、文字列が正しいJSON形式でない場合にエラーをスローします。そのため、エラー処理を追加することが重要です。
例:
try {
const invalidJson = '{"name": "太郎", age: 25}'; // 不正なJSON
const obj = JSON.parse(invalidJson);
} catch (error) {
console.error("JSONの解析中にエラーが発生しました:", error.message);
}
JavaScriptオブジェクトをJSONに変換する
JavaScriptオブジェクトをJSON形式の文字列に変換するには、JSON.stringify()
メソッドを使用します。
例:
const obj = { name: "花子", age: 30, isStudent: false };
const jsonString = JSON.stringify(obj);
console.log(jsonString); // {"name":"花子","age":30,"isStudent":false}
また、引数を追加することでフォーマットを調整できます。たとえば、JSON文字列をインデント付きで生成する場合:
const formattedJson = JSON.stringify(obj, null, 4);
console.log(formattedJson);
// {
// "name": "花子",
// "age": 30,
// "isStudent": false
// }
APIでのJSONの利用
JSONは、API通信においてデータフォーマットとして一般的に使用されます。JavaScriptでAPIを利用する場合、fetch()
関数を使用してJSONを処理する例を示します。
例:
fetch("https://api.example.com/data")
.then(response => response.json())
.then(data => {
console.log(data);
})
.catch(error => {
console.error("データの取得中にエラーが発生しました:", error);
});
上記の例では、response.json()
を使ってサーバーからのJSONデータをJavaScriptオブジェクトに変換しています。
JSON操作の注意点とコツ
JSONを操作する際には、以下の点に注意してください:
- JSONではコメントがサポートされていないため、コメントを含める必要がある場合は別の方法を検討する。
- データサイズが大きい場合、
JSON.stringify()
とJSON.parse()
は処理時間やメモリ消費量に影響を与える可能性がある。 - 数値は精度に限界があるため、大きな数値や精密な計算が必要な場合は注意が必要。
- セキュリティ面では、信頼できないJSONデータの解析を行う際に十分なバリデーションを行う。
また、JSONを効率的に操作するために、専用ライブラリ(たとえばajv
)を利用してスキーマバリデーションを行うのも有効です。