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