8

如何将对象输出为具有格式的可读字符串(结构类似于 with <pre>)?

没有 jQuery 可能。

我的对象看起来像这样使用console.log.

Object
   title: "Another sting"
   type: "tree"
   options: Object
      paging: "20"
      structuretype: "1"
   columns: Object
      ...
   description: "This is a string"
   ...

将其转换为结构化字符串的最佳方法是什么?

我的尝试:

我尝试使用stringify()来获取 JSON 结构。然后我可以编写自己的解析器,但也许已经有任何实现了?

4

2 回答 2

17

JSON.stringify包括一个格式化参数:

JSON.stringify(value[, replacer [, space]])

space 参数可用于控制最终字符串中的间距。如果它是一个数字,则字符串化中的连续级别将由这么多空格字符(最多 10 个)缩进。如果它是一个字符串,连续的级别将由这个字符串(或它的前十个字符)缩进。

使用制表符模仿标准的漂亮打印外观

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/JSON/stringify

这足以满足您的需要吗?例如尝试:

 JSON.stringify( object, null, 2 );

否则,http://code.google.com/p/google-code-prettify/是一个独立的 JSON 到 HTML 漂亮的打印机。我相信被stackoverflow和谷歌代码使用。

于 2012-10-18T09:30:05.577 回答
0

同时我想出了这个功能,也许有人可以使用它:

addIndent: function(nSpaces) {
         var strOutput = '';
         for(var i = 0; i < nSpaces; i++) {
            strOutput += '--';
         }
         return strOutput; 
      }

parseObjToStr: function(oObject, nLevel) {
         var that = this;
         var strOutput = '';
         nLevel = nLevel || 0;

         for(var oEl in oObject) {
            if(typeof oObject[oEl] === 'object' || Object.prototype.toString.call( oObject[oEl] ) === '[object Array]') 
            {
               strOutput += that.addIndent(nLevel) + oEl + "<br />";
               strOutput += that.parseObjToStr( oObject[oEl], nLevel+1);
            } 
            else 
            {
               strOutput += that.addIndent(nLevel) + oEl + " = " + oObject[oEl] + "<br />";
            }
         }
         return strOutput;
      }
于 2012-10-18T09:57:03.710 回答