JSON.stringify 関数 (JavaScript)
構文: JSON.stringify(value [, replacer] [, space])
JavaScript 値を JavaScript Object Notation (Json) 文字列に変換します。
値
必須。 変換する JavaScript 値 (通常はオブジェクトまたは配列)。
交換者
オプション。 結果の変換に使用される関数または配列。
replacer が関数の場合、JSON.stringify はその関数を呼び出し、各メンバーのキーと値を渡します。 元の値の代わりに戻り値を使用します。 この関数が未定義を返した場合、メンバーは除外されます。 ルート オブジェクトのキーは空の文字列「"」です。
replacer が配列の場合、配列内のキー値を持つメンバーのみが変換されます。 メンバーは配列内のキーと同じ順序で変換されます。 value 引数も配列である場合、replacer 配列は無視されます。
スペース
オプション。 戻り値の JSON テキストにインデント、スペース、改行を追加して読みやすくします。
スペースを省略した場合、戻り値のテキストは余分なスペースなしで生成されます。
スペースが数値の場合、戻り値のテキストは各レベルで指定された数のスペースでインデントされます。 スペースが 10 より大きい場合、テキストはスペース 10 個分インデントされます。
スペースが空ではない文字列 (" " など) の場合、戻り値のテキストは文字列内の文字によって各レベルでインデントされます。
スペースが 10 文字を超える文字列の場合は、最初の 10 文字が使用されます。
値に toJSON メソッドがある場合、JSON.stringify 関数はそのメソッドの戻り値を使用します。 toJSONメソッドの戻り値が未定義の場合、メンバーは変換されません。 これにより、オブジェクトが独自の JSON 表現を決定できるようになります。
未定義など、JSON 表現を持たない値は変換されません。 オブジェクトでは、これらの値は破棄されます。 配列では、これらの値は null に置き換えられます。
約定命令
シリアル化プロセス中に、value パラメーターが toJSON メソッドに対応する場合、JSON.stringify は最初に toJSON メソッドを呼び出します。 メソッドが存在しない場合は、元の値が使用されます。 次に、replacer パラメータが指定されている場合、その値 (元の値または toJSON 戻り値のいずれか) が replacer パラメータの戻り値で置き換えられます。 最後に、オプションのスペース パラメーターに基づいて値にスペースが追加され、最終的な JSON テキストが生成されます。
この例では、JSON.stringify を使用して連絡先オブジェクトを JSON テキストに変換します。 姓と電話番号のメンバーのみを変換するように memberfilter 配列を定義します。 名メンバーを省略します。
var contact = new Object();
contact.firstname = "ジェスパー";
contact.surname = "アーバーグ";
contact.phone = ["555-0100", "555-0120"];
var memberfilter = new Array();
memberfilter[0] = "姓";
memberfilter[1] = "電話";
var jsonText = JSON.stringify(contact, memberfilter, "t");
document.write(jsonText);
// 出力:
// { "姓": "Aaberg", "電話番号": [ "555-0100", "555-0120" ] }
toJSON メソッド (日付) (JavaScript)
構文: objectname.toJSON()
オブジェクト名
必須。 JSON シリアル化する必要があるオブジェクト。
toJSON メソッドは、Date JavaScript オブジェクトの組み込みメンバーです。 ISO 形式の日付文字列を UTC タイムゾーンで返します (接尾辞 Z で表されます)。
次の例では、toJSON メソッドを使用して大文字の文字列メンバー値をシリアル化します。 toJSON メソッドは、JSON.stringify を呼び出すときに呼び出されます。
JavaScript
var contact = new Object();
contact.firstname = "ジェスパー";
contact.surname = "アーバーグ";
contact.phone = ["555-0100", "555-0120"];
contact.toJSON = 関数(キー)
{
var replace = new Object();
for (この中の var val)
{
If (typeof (this[val]) === 'string')
replace[val] = this[val].toUpperCase();
その他
置換[val] = this[val]
}
返品交換;
};
var jsonText = JSON.stringify(contact);
/* jsonText の値は次のとおりです:
'{"名":"JESPER","姓":"AABERG","電話番号":["555-0100","555-0120"]}'
*/
JSON.parse 関数 (JavaScript)
JavaScript Object Notation (JSON) 文字列をオブジェクトに変換します
構文: JSON.parse(text [, reviver])
テキスト
必須。 有効な JSON 文字列。
リバイバー
オプション。 結果を変換する関数。 この関数は、オブジェクトのメンバーごとに呼び出されます。 メンバーにネストされたオブジェクトが含まれている場合、ネストされたオブジェクトは親オブジェクトの前に変換されます。 各メンバーに対して、次のことが起こります:
reviver が有効な値を返した場合、メンバーの値は変換された値に置き換えられます。
リバイバーが受け取ったのと同じ値を返す場合、メンバーの値は変更されません。
reviver が null または未定義を返した場合、メンバーは削除されます。
次の例では、JSON.parse を使用して JSON 文字列をオブジェクトに変換します。
var jsontext = '{"名":"ジェスパー","姓":"アーバーグ","電話":["555-0100","555-0120"]}';
var contact = JSON.parse(jsontext);
document.write(contact.surname ", " contact.firstname);
// 出力: Aaberg、Jesper
次の例は、JSON.stringify を使用して配列を JSON 文字列に変換し、その後 JSON.parse を使用して文字列を配列に変換する方法を示しています。
var arr = ["a", "b", "c"];
var str = JSON.stringify(arr);
document.write(str);
document.write ("
");
var newArr = JSON.parse(str);
while (newArr.length > 0) {
Document.write(newArr.pop() "
");
}
// 出力:
// ["a","b","c"]
// c
// b
//