JSON.parse()
このメソッドは文字列をJSONとして解析し、解析によって任意で値に変換します。
文法
JSON.parse(text[, reviver])
引数 | 説明 |
---|---|
text | JSONとして解析する文字列を指定します。 JSONの文法の説明については、JSONオブジェクトを参照してください。 |
reviver |
任意 事前に解析によって生成された元の値を変換する関数を指定することで、値が返される前にその処理を実行します。 |
戻り値 | |
指定したJSONテキストに応じたオブジェクトが返されます。 |
文字列が不正なJSONであった場合、SyntaxError
がスローされます。
例
JSON.parse()の使用例
JSON.parse('{}'); // {}
JSON.parse('true'); // true
JSON.parse('"foo"'); // "foo"
JSON.parse('[1, 5, "false"]'); // [1, 5, "false"]
JSON.parse('null'); // null
reviverパラメーターの使用例
reviverが指定された場合、解析された値が返される前に、その値の変換を行います。
特に解析された値とその全てのプロパティ(先頭の最も深い階層のプロパティから、元の値自身へと向かう順で処理されます)は、
reviverを通して個別に実行されます。
この時、プロパティ名の文字列とプロパティの値が引数として、
this
として処理されているプロパティを含むオブジェクト上で呼ば出されます。(翻訳に自信なし)
もし、reviver
関数がundefined
(または、関数が値を返さないで終了するような、"値無し"の状態)を返す場合、
そのプロパティはオブジェクトから削除されます。
そうでなければ、戻り値がそのプロパティに再定義されます。
reviver
は最終的には最上位階層の値が空文字列のキーと共に呼び出しが行われ、
この最上位階層の値を変換することが出来ます。
ここで適切な処理を行って下さい。
通常は提供された値をそのまま返します。
もし、そうしなければJSON.parseはundefined
を返してしまいます。
JSON.parse('{"p": 5}', function (k, v) {
if(k === "") return v; // 最上位階層の値の場合。
return v * 2; // それ以外は、v * 2を返します。
}); // 結果 { p: 10 }
JSON.parse('{"1": 1, "2": 2, "3": {"4": 4, "5": {"6": 6}}}', function (k, v) {
console.log(k); // 処理中のプロパティ名をログ出力。最後は""になります。
return v; // プロパティの値は変更せずに返します。
});
// 1
// 2
// 4
// 6
// 5
// 3
// ""
仕様
ブラウザ互換性
機能 | Chrome | Firefox (Gecko) |
IE | Opera | Safari |
---|---|---|---|---|---|
基本 | ◯ | 3.5 (1.9.1) | 8.0 | 10.5 | 4.0 |
機能 | Android | Chrome for Android |
Firefox Mobile |
IE Mobile |
Opera Mobile |
Safari Mobile |
---|---|---|---|---|---|---|
基本 | ◯ | ◯ | 1.0 (1.0) | ◯ | ◯ | ◯ |
関連項目
© 2017 Mozilla Contributors
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
このページは、ページトップのURL先のMozilla Developer Network(以下、MDN)のコンテンツを翻訳した内容を基に構成されています。 構成について異なる点も含まれますので、下記の項目を確認し、必要に応じて元のコンテンツをご確認ください。 もし、誤訳などの間違いを見つけましたら、 @tomofまで教えていただければ幸いです。
- 特定のブラウザに特化しすぎている情報やあまりにも古い情報、 または試験的に導入されているようなAPIや機能については、省略していることがあります。
- 例やデモについて、実際にページ内で動作させる関係で一部ソースコードを変更している場合や、 その例で使用しているコンテンツの単語や文章などを日本人向けに変更しいてる場合があります。
- MDNの更新頻度が高いため、元のコンテンツと比べ情報が古くなっている可能性があります。
- "訳注:"などの断わりを入れた上で、日本人向けの情報の追記を行っている事があります。