Some print.
Some print.
~SingleForum~无废话记录~ + ~19~记录点有用的好吗?少说废话少装b~

~SingleForum~无废话记录~ » js

将json解析成字符串

Started 2 years ago by admin. | Tags: . .

JAVASCRIPT:
  1. var json = retStr.evalJSON();
  2.     alert (json.toString());
  3.     document.writeln(JsonUti.convertToString(json));
  4.  
  5.       var JsonUti = {
  6.             //定义换行符
  7.             n: "\n",
  8.             //定义制表符
  9.             t: "\t",
  10.             //转换String
  11.             convertToString: function(obj) {
  12.                 return JsonUti.__writeObj(obj, 1);
  13.             },
  14.             //写对象
  15.             __writeObj: function(obj    //对象
  16.                     , level             //层次(基数为1)
  17.                     , isInArray) {       //此对象是否在一个集合内
  18.                 //如果为空,直接输出null
  19.                 if (obj == null) {
  20.                     return "null";
  21.                 }
  22.                 //为普通类型,直接输出值
  23.                 if (obj.constructor == Number || obj.constructor == Date || obj.constructor == String || obj.constructor == Boolean) {
  24.                     var v = obj.toString();
  25.                     var tab = isInArray ? JsonUti.__repeatStr(JsonUti.t, level - 1) : "";
  26.                     if (obj.constructor == String || obj.constructor == Date) {
  27.                         //时间格式化只是单纯输出字符串,而不是Date对象
  28.                         return tab + ("\"" + v + "\"");
  29.                     }
  30.                     else if (obj.constructor == Boolean) {
  31.                         return tab + v.toLowerCase();
  32.                     }
  33.                     else {
  34.                         return tab + (v);
  35.                     }
  36.                 }
  37.  
  38.                 //写Json对象,缓存字符串
  39.                 var currentObjStrings = [];
  40.                 //遍历属性
  41.                 for (var name in obj) {
  42.                     var temp = [];
  43.                     //格式化Tab
  44.                     var paddingTab = JsonUti.__repeatStr(JsonUti.t, level);
  45.                     temp.push(paddingTab);
  46.                     //写出属性名
  47.                     temp.push(name + " : ");
  48.  
  49.                     var val = obj[name];
  50.                     if (val == null) {
  51.                         temp.push("null");
  52.                     }
  53.                     else {
  54.                         var c = val.constructor;
  55.  
  56.                         if (c == Array) { //如果为集合,循环内部对象
  57.                             temp.push(JsonUti.n + paddingTab + "[" + JsonUti.n);
  58.                             var levelUp = level + 2;    //层级+2
  59.  
  60.                             var tempArrValue = [];      //集合元素相关字符串缓存片段
  61.                             for (var i = 0; i < val.length; i++) {
  62.                                 //递归写对象
  63.                                 tempArrValue.push(JsonUti.__writeObj(val[i], levelUp, true));
  64.                             }
  65.  
  66.                             temp.push(tempArrValue.join("," + JsonUti.n));
  67.                             temp.push(JsonUti.n + paddingTab + "]");
  68.                         }
  69.                         else if (c == Function) {
  70.                             temp.push("[Function]");
  71.                         }
  72.                         else {
  73.                             //递归写对象
  74.                             temp.push(JsonUti.__writeObj(val, level + 1));
  75.                         }
  76.                     }
  77.                     //加入当前对象“属性”字符串
  78.                     currentObjStrings.push(temp.join(""));
  79.                 }
  80.                 return (level > 1 &#38;&#38; !isInArray ? JsonUti.n : "")                       //如果Json对象是内部,就要换行格式化
  81.                     + JsonUti.__repeatStr(JsonUti.t, level - 1) + "{" + JsonUti.n     //加层次Tab格式化
  82.                     + currentObjStrings.join("," + JsonUti.n)                       //串联所有属性值
  83.                     + JsonUti.n + JsonUti.__repeatStr(JsonUti.t, level - 1) + "}";   //封闭对象
  84.             },
  85.             __isArray: function(obj) {
  86.                 if (obj) {
  87.                     return obj.constructor == Array;
  88.                 }
  89.                 return false;
  90.             },
  91.             __repeatStr: function(str, times) {
  92.                 var newStr = [];
  93.                 if (times > 0) {
  94.                     for (var i = 0; i < times; i++) {
  95.                         newStr.push(str);
  96.                     }
  97.                 }
  98.                 return newStr.join("");
  99.             }
  100.         };

RSS feed for this topic