Javascript对象到格式化的字符串

时间:2012-10-18 08:35:23

标签: javascript json object

如何将对象输出为具有格式的可读字符串(与<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结构。然后我可以编写自己的解析器,但是可能已经有任何实现了吗?

2 个答案:

答案 0 :(得分:11)

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/是HTML漂亮打印机的独立JSON。我相信stackoverflow和谷歌代码使用它。

答案 1 :(得分: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;
      }