jQueryでJSON形式のオブジェクトをJSON文字列に変換する関数!
例えば、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 ? "]" : "}"); } } });
を記述しておくことでも使用可能です。