今すぐチェック! JavaScript で JSON 文字列かどうかを判別する方法
JavaScript で JSON 文字列かどうかを確認する方法
JSON.parse() を使う
最も一般的な方法は、JSON.parse()
関数を使うことです。この関数は、JSON 文字列を JavaScript オブジェクトに変換しようとします。もし、文字列が有効な JSON 形式であれば、パースに成功し、JavaScript オブジェクトが返されます。そうでなければ、SyntaxError
例外がスローされます。
const jsonString = '{ "name": "John Doe", "age": 30 }';
try {
const obj = JSON.parse(jsonString);
console.log(obj); // { name: 'John Doe', age: 30 }
} catch (e) {
console.error(e); // SyntaxError: Unexpected token in JSON string
}
この方法はシンプルで分かりやすく、エラー処理もしやすいという利点があります。
RegExp を使う
正規表現を使って、JSON 文字列の構造を検証する方法もあります。これは、より詳細な検証が必要な場合に役立ちます。
const jsonString = '{ "name": "John Doe", "age": 30 }';
const regex = /^{ "[\w-]+": (?:\[|"{].*"}|true|false|null|[-+]?\d+(?:\.\d+)?),*\}$/;
if (regex.test(jsonString)) {
console.log('有効な JSON 文字列です');
} else {
console.error('無効な JSON 文字列です');
}
この方法は、より柔軟な検証が可能ですが、JSON.parse()
を使う方法よりも複雑で分かりにくいという欠点があります。
その他の方法
上記以外にも、typeof
演算子や instanceof
演算子を使って JSON 文字列かどうかを確認する方法があります。しかし、これらの方法は、より詳細な検証には向いていません。
JSON 文字列かどうかを確認するには、JSON.parse()
関数を使うのが最も一般的です。より詳細な検証が必要な場合は、正規表現を使うこともできます。
補足
- 上記のコード例は、ES6 で記述されています。古いバージョンの JavaScript を使用している場合は、一部の構文が異なる場合があります。
- JSON スキマを使って、より厳格な検証を行うこともできます。
JSON.parse() を使う
const jsonString1 = '{ "name": "John Doe", "age": 30 }';
const jsonString2 = '{"name": "Jane Doe", "age": 40}';
const invalidString = 'This is not a JSON string';
try {
const obj1 = JSON.parse(jsonString1);
console.log(obj1); // { name: 'John Doe', age: 30 }
} catch (e) {
console.error(e); // SyntaxError: Unexpected token in JSON string
}
try {
const obj2 = JSON.parse(jsonString2);
console.log(obj2); // { name: 'Jane Doe', age: 40 }
} catch (e) {
console.error(e); // SyntaxError: Unexpected token in JSON string
}
try {
JSON.parse(invalidString);
} catch (e) {
console.error(e); // SyntaxError: Unexpected token in JSON string
}
RegExp を使う
const jsonString1 = '{ "name": "John Doe", "age": 30 }';
const jsonString2 = '{"name": "Jane Doe", "age": 40}';
const invalidString = 'This is not a JSON string';
const regex = /^{ "[\w-]+": (?:\[|"{].*"}|true|false|null|[-+]?\d+(?:\.\d+)?),*\}$/;
console.log(regex.test(jsonString1)); // true
console.log(regex.test(jsonString2)); // true
console.log(regex.test(invalidString)); // false
その他の方法
const jsonString1 = '{ "name": "John Doe", "age": 30 }';
const jsonString2 = '{"name": "Jane Doe", "age": 40}';
const invalidString = 'This is not a JSON string';
console.log(typeof jsonString1 === 'string' && JSON.parse(jsonString1) !== null); // true
console.log(typeof jsonString2 === 'string' && JSON.parse(jsonString2) !== null); // true
console.log(typeof invalidString === 'string' && JSON.parse(invalidString) !== null); // false
console.log(jsonString1 instanceof String && JSON.parse(jsonString1) !== null); // true
console.log(jsonString2 instanceof String && JSON.parse(jsonString2) !== null); // true
console.log(invalidString instanceof String && JSON.parse(invalidString) !== null); // false
これらのサンプルコードは、それぞれの方法の使い方を理解するのに役立ちます。
注: 上記のコードはあくまで一例であり、状況に応じて自由に改変することができます。
JavaScript で JSON 文字列かどうかを確認するその他の方法
JSON.stringify()
関数は、JavaScript オブジェクトを JSON 文字列に変換します。この逆の手順を使って、JSON 文字列かどうかを確認することができます。
const jsonString = '{ "name": "John Doe", "age": 30 }';
const invalidString = 'This is not a JSON string';
try {
JSON.parse(JSON.stringify(jsonString));
console.log('有効な JSON 文字列です');
} catch (e) {
console.error(e);
}
try {
JSON.parse(JSON.stringify(invalidString));
} catch (e) {
console.error(e); // SyntaxError: Unexpected token in JSON string
}
この方法は、JSON.parse()
と同様にエラー処理が簡単ですが、JSON.stringify()
と JSON.parse()
の両方の呼び出しが必要となるため、処理が少し重くなります。
eval() を使う
注意: eval()
関数は、セキュリティ上の問題があるため、一般的には使用を避けるべきです。**
eval()
関数は、JavaScript コードを文字列として評価することができます。この機能を使って、JSON 文字列かどうかを確認することができます。
const jsonString = '{ "name": "John Doe", "age": 30 }';
const invalidString = 'This is not a JSON string';
try {
eval('(' + jsonString + ')');
console.log('有効な JSON 文字列です');
} catch (e) {
console.error(e);
}
try {
eval('(' + invalidString + ')');
} catch (e) {
console.error(e); // SyntaxError: Unexpected token in JSON string
}
この方法は、非常に簡潔ですが、セキュリティ上の問題があるため、 推奨されません。
ライブラリを使う
JSON 文字列の検証を容易にするためのライブラリがいくつかあります。
これらのライブラリは、より詳細な検証機能を提供したり、エラー処理を簡潔にすることができます。
JSON 文字列かどうかを確認するには、様々な方法があります。それぞれの方法には長所と短所があるため、状況に応じて適切な方法を選択する必要があります。
javascript json