8

オブジェクトをフォーマット付きの読み取り可能な文字列として出力するにはどうすればよいですか(のように構造化されています<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]])

スペース引数は、最終的な文字列の間隔を制御するために使用できます。数値の場合、文字列化の連続するレベルはそれぞれ、この数のスペース文字(最大10)によってインデントされます。文字列の場合、連続するレベルはこの文字列(または文字列の最初の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とgooglecodeで使用されていると思います。

于 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 に答える