mozilla
Your Search Results

    JSON.parse

    概要

    JSON.parse() メソッドは文字列を JSON として解析し、また任意で解析によって作り出された値を変換します。

    構文

    JSON.parse(text[, reviver])

    引数

    text
    JSON として解析する文字列。JSON の構文の説明は JSON オブジェクトを参照してください。
    reviverOptional
    もし関数である場合、解析により作り出された元の値を、オブジェクトを返す前に変換する方法を指示します。

    戻り値

    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()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 
    // ""
    

    仕様

    仕様書 策定状況 コメント
    ECMAScript 5.1 (ECMA-262)
    The definition of 'JSON.parse' in that specification.
    Standard 最初期の定義。JavaScript 1.7 で実装されました。
    ECMAScript 6 (ECMA-262)
    The definition of 'JSON.parse' in that specification.
    ドラフト  

    ブラウザ実装状況

    機能 Chrome Firefox (Gecko) Internet Explorer Opera Safari
    基本サポート (有) 3.5 (1.9.1) 8.0 10.5 4.0
    機能 Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
    基本サポート (有) (有) 1.0 (1.0) (有) (有) (有)

    Kangax's compat table に基づく。

    Gecko 固有の注意事項

    Gecko 29 (Firefox 29 / Thunderbird 29 / SeaMonkey 2.26) より、不正な JSON 文字列を解析すると解析エラーが発生した行番号と桁番号を含むエラーメッセージが発生します。これは大規模な JSON データをデバッグするときに便利です。

    JSON.parse('[1, 2, 3,]');
    // SyntaxError: JSON.parse: unexpected character at
    // line 1 column 10 of the JSON data
    

    関連情報

    ドキュメントのタグと貢献者

    Contributors to this page: twe
    最終更新者: twe,