この記事の英語版を表示するには、[英語] のチェック ボックスをオンにしてください。また、テキストにマウス ポインターを合わせると、ポップアップ ウィンドウに英語のテキストを表示することもできます。
翻訳
英語

JSON.parse 関数 (JavaScript)

 

JSON (JavaScript Object Notation) 文字列をオブジェクトに変換します。

JSON.parse(text [, reviver])

text

必須。

有効な JSON 文字列。

reviver

省略可能です。 結果を変換する関数。 この関数は、オブジェクトの各メンバーに対して呼び出されます。 メンバーに入れ子になったオブジェクトが含まれる場合、それが変換されてからその親オブジェクトが変換されます。 各メンバーは、次のように処理されます。

  • reviver が有効な値を返した場合、メンバー値は変換された値に置き換えられます。

  • reviver が受け取った値と同じ値を返した場合、メンバー値は変更されません。

  • revivernull未定義を返す場合、メンバーは削除されます。

オブジェクトまたは配列。

この関数で JavaScript パーサー エラー ("SCRIPT1014: 無効な文字です" など) が発生した場合は、入力テキストが JSON の構文に準拠していません。 エラーを修正するには、次の 1 つを実行してください。

  • JSON の構文に準拠するように text 引数を変更します。 詳しくは、JSON オブジェクトの BNF 構文表記法をご覧ください。

    たとえば、応答が純粋 JSON ではなく JSONP 形式である場合は、応答オブジェクトでこのコードを実行します。

    var fixedResponse = response.responseText.replace(/\\'/g, "'");
    var jsonObj = JSON.parse(fixedResponse);
    
  • text 引数が JSON.stringify などの JSON 準拠の実装によってシリアル化されていることを確認します。

  • 構文エラーを識別するには、JSLint などの JSON 検証コントロールで text 引数を実行します。

Exception Condition

JSON.parse を使って JSON 文字列をオブジェクトに変換する例を次に示します。

var jsontext = '{"firstname":"Jesper","surname":"Aaberg","phone":["555-0100","555-0120"]}';
var contact = JSON.parse(jsontext);
document.write(contact.surname + ", " + contact.firstname);
document.write(contact.phone[1]);
// Output:
// Aaberg, Jesper
// 555-0100

次の例では、JSON.stringify を使用して配列を JSON 文字列に変換した後、JSON.parse を使用して文字列を配列に変換しています。

var arr = ["a", "b", "c"];
var str = JSON.stringify(arr);
document.write(str);
document.write ("<br/>");

var newArr = JSON.parse(str);

while (newArr.length > 0) {
    document.write(newArr.pop() + "<br/>");
}


// Output:
// ["a","b","c"]
// c
// b
// a

reviver 関数は、国際標準化機構 (ISO) の日付文字列の JSON 表現を、世界協定時 (UTC) 形式の Date オブジェクトに変換する場合によく使われます。 この例では、JSON.parse を使って、ISO 形式の日付文字列を逆シリアル化します。 dateReviver 関数は、ISO 日付文字列のように書式設定されたメンバーの Date オブジェクトを返します。

var jsontext = '{ "hiredate": "2008-01-01T12:00:00Z", "birthdate": "2008-12-25T12:00:00Z" }';
var dates = JSON.parse(jsontext, dateReviver);
document.write(dates.birthdate.toUTCString());

function dateReviver(key, value) {
    var a;
    if (typeof value === 'string') {
        a = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);
        if (a) {
            return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],
                            +a[5], +a[6]));
        }
    }
    return value;
};

// Output:
// Thu, 25 Dec 2008 12:00:00 UTC

要件

Internet Explorer 8 標準、Internet Explorer 9 標準、Internet Explorer 10 標準、Internet Explorer 11 標準の各ドキュメント モードでサポートされます。 ストア アプリ (Windows 8 および Windows Phone 8.1) でもサポートされます。 「バージョン情報」を参照してください。

Quirks、Internet Explorer 6 標準、Internet Explorer 7 標準の各ドキュメント モードではサポートされていません。

表示: