プログラミングで飯を食え。腕をあげたきゃ備忘録!

PHP、JavaScript、HTML5、CSS3などWEB系言語を中心に基本テク、備忘録をまとめます。Android、Iphoneアプリ開発についても!

jQueryでJSON形式のオブジェクトをJSON文字列に変換する関数!

サクウェブTVはコチラ↓↓↓
サクウェブTV

例えば、stringify.jsという名前で以下のスクリプトを保存します。

(function($) {
	$.extend({
		stringify: function stringify(obj) {
			
			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 ? "]" : "}");
			}
		}
	});
})(jQuery);

そして、以下のように読み込んで、

<script type="text/javascript" src="./js/jquery.js"></script>
<script type="text/javascript" src="./js/stringify.js"></script>
<script type="text/javascript" src="./js/script.js"></script>

script.jsの中で、

var json = [
                {"name":"kawata","tel":"050","email":"sample@yahoo"},
	            {"name":"tanaka","tel":"080","email":"sample@gmail"},
	            {"name":"sawada","tel":"030","email":"sample@hotmail"}
	            ];
	
	var str = $.stringify(json);
	alert(str);
	
	var parse = $.parseJSON(str);
	alert(parse);

のようにして使用します。

ちなみに、

$.parseJSON()はJSON文字列をオブジェクトに変換するメソッドです。

また、stringify.jsのように別ファイルで保存しなくても、script.jsの中で$.stringify()を使用する前に

	$.extend({
		stringify: function stringify(obj) {
			
			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 ? "]" : "}");
			}
		}
	});

を記述しておくことでも使用可能です。