JQueryでオブジェクトをJSON文字列に変換 ($.stringify())

提供:wiki - PCスキルの小技・忘却防止メモ
移動: 案内, 検索

$.stringify()を使うとオブジェクトJSON形式の文字列に変換してくれる。逆にJSON形式の文字列をオブジェクトに変換するのは、parseJSON()というのがある。

目次

めも

JQueryでJSONの変換 ($.json_decode()、$.json_encode()) 」にまとめなおした。

オブジェクトをJSON文字列に変換とその逆の関数名をPHPの「json_decode()」「json_encode()」と同じしてみた。ついでにJSON文字列をオブジェクトに変換失敗したときの処理も追加。

ソース

stringify: function stringify(obj) {
	/// <summary>
	/// オブジェクトをJSON文字列に変換する。
	/// ※JSON文字列をオブジェクトに変換する場合はjQuery標準のparseJSONを使う。
	///
	/// json = $.stringify(obj);
	/// obj  = $.parseJSON(json);
	/// </summary>
	
	var t = typeof (obj);
	if (t != "object" || obj === null) {
		// simple data type
		if (t == "string") {
			obj = '"' + obj + '"';
		}
		return String(obj);
	}
	else {
		var n, v, json = [];
		var arr = (obj && $.isArray(obj));
			
		for (n in obj) {
			v = obj[n];
			t = typeof(v);
			if (obj.hasOwnProperty(n)) {
				if (t == "string") {
					v = '"' + v + '"';
				}
				else if (t == "object" && v !== null) {
					v = jQuery.stringify(v);
				}
				json.push((arr ? "" : '"' + n + '":') + String(v));
			}
		}
		return (arr ? "[" : "{") + String(json) + (arr ? "]" : "}");
	}
}

別ファイルでするなら「function($) {$.extend({})}」内にいれておく。

利用している自作関数

呼出し方

var jsonString = $.stringify(obj)

関連項目

もと