본문 바로가기
描く

JSON.parse() - JavaScript | MDN - Mozilla

by 엘리후 2021. 7. 6.

JSON.parse() メソッドは文字列を JSON として解析し、文字列によって記述されている JavaScript の値やオブジェクトを構築します。任意の reviver 関数で、生成されたオブジェクトが返される前に変換を実行することができます。


構文

JSON.parse(text[, reviver])

引数

text

JSON として解析する文字列。JSON の構文の説明は JSON オブジェクトを参照してください。

reviver Optional

もし関数である場合、解析により作り出された元の値を、オブジェクトを返す前に変換する方法を指示します。

返値

text として与えられた JSON に相当する Object を返します。

例外

解析する文字列が有効な 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 を通して変換されます。reviver は処理されるプロパティを含むオブジェクトが this として、また文字列のプロパティ名とプロパティの値を引数として呼び出されます。もし reviver 関数が undefined を返したり、何の値も返さなかったり(例えば実行が関数の終わりで【訳注: return 文によってではなくて】終了した場合)した場合、そのプロパティはオブジェクトから削除されます。そうでなければそのプロパティはその戻り値として再定義されます。

もし reviver が一部の値だけを変換して他を変換しないのであれば、必ずすべての変換されない値をそのまま返すようにします。そうしなければ、それらの値は結果のオブジェクトから削除されるでしょう。

JSON.parse('{"p": 5}', (key, value) => typeof value === 'number' ? value * 2 // 数値ならば値の2倍を返す : value // それ以外ならば変更しない ); // { p: 10 } JSON.parse('{"1": 1, "2": 2, "3": {"4": 4, "5": {"6": 6}}}', (key, value) => { console.log(key); // 現在のプロパティ名を出力する。最後は ""。 return value; // 変更されていないプロパティの値を返す。 }); // 1 // 2 // 4 // 6 // 5 // 3 // ""

JSON.parse() は末尾のカンマを許容しません

// 両方とも SyntaxError をスローする JSON.parse('[1, 2, 3, 4, ]'); JSON.parse('{"foo" : 1, }');

댓글