jqueryでオブジェクトをJSON形式のテキストデータに変換する

  1. <!DOCTYPE html>
  2. <html lang="ja">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>jqueryでオブジェクトをJSON形式のテキストデータに変換する</title>
  6. <script type="text/javascript" src="jquery-1.5.1.min.js"></script>
  7. <script type="text/javascript" src="knockout-2.1.0beta.js"></script>
  8. <script type="text/javascript">
  9.   jQuery.extend({
  10.     stringify : function stringify(obj) {
  11.       var t = typeof (obj);
  12.       if (t != "object" || obj === null) {
  13.         // simple data type
  14.         if (t == "string") obj = '"' + obj + '"';
  15.         return String(obj);
  16.       }
  17.       else {
  18.         // recurse array or object
  19.         var n, v, json = [], arr = (obj && obj.constructor == Array);
  20.    
  21.         for (n in obj) {
  22.           v = obj[n];
  23.           t = typeof(v);
  24.           if (obj.hasOwnProperty(n)) {
  25.             if (t == "string") v = '"' + v + '"'; else if (t == "object" && v !== null) v = jQuery.stringify(v);
  26.             json.push((arr ? "" : '"' + n + '":') + String(v));
  27.           }
  28.         }
  29.         return (arr ? "[" : "{") + String(json) + (arr ? "]" : "}");
  30.       }
  31.     }
  32.   });
  33.   function ViewModel() {
  34.     var self = this;
  35.     var obj = ([
  36.       {"name":"ねぎ間","price":"168"},
  37.       {"name":"ハツ","price":"136"},
  38.       {"name":"レバー","price":"136"}
  39.     ]);
  40.     
  41.     self.jsonStr = ko.observable($.stringify(obj));
  42.   }
  43.   $(document).ready(function () {
  44.     ko.applyBindings(new ViewModel());
  45.   });
  46. </script>
  47. </head>
  48. <body>
  49. <h1>jqueryでオブジェクトをJSON形式のテキストデータに変換する</h1>
  50. <div data-bind="text: jsonStr"></div>
  51. <p>※knockout.jsを使って出力しています</p>
  52. <div style="font-size:10pt;text-align:right;margin-top:0.5em;">
  53. <a href="//tips.recatnap.info/" target="_top">PCスキルの小技・忘却防止メモ</a> -
  54. <a href="//tips.recatnap.info/wiki/" target="_top">PCスキルの小技・忘却防止メモのまとめ(wiki)</a>
  55. </div>
  56. <div style="font-size:10pt;text-align:center;margin-top:0.5em;padding:0.5em;border-top:1px solid #ccc;">
  57. Copyright &copy; 2009 by PCスキルの小技・忘却防止メモ. All rights reserved.
  58. </div>
  59. </body>
  60. </html>