我是Javascript的新手,我必须使用漂亮的功能打印Json输出,但输出不是预期的,它只是打印正常,但我期待与缩进。我也经历了以下链接,任何人都可以帮助我,为什么这不起作用。
How can I pretty-print JSON using JavaScript?
<html>
<script type="text/javascript">
function showJson(){
var jsonString = "{array:[1,2,3],boolean:true,null:null,number:123,object:{a:b,c:d,e:f},string:Hello World}";
document.getElementById('json_output').innerHTML = JSON.stringify(jsonString, null, '\t');
}
function output(inp) {
document.body.appendChild(document.createElement('pre')).innerHTML = inp;
}
</script>
<body>
<input type="button" onclick="showJson();" value="Click Me!!">
<br>
<br>
STRING FROM DEVICE : <div id='json_output'>HI</div>
</body>
答案 0 :(得分:1)
您正在将无效的JSON文本作为JSON.stringify
的输入。如果要将JavaScript对象字符串化为JSON文本,则需要:
JSON.parse
)。您还将生成的数据附加到<div>
(output
函数中前面提到的未使用,因为您从未调用该函数),并且您在示例中没有CSS会导致空白区域显着,所以你还需要改变它。
对于一般情况,使用innerHTML
也不安全。 JSON可能包含&
或<
字符,因此您应使用createTextNode
确保适当转义任何此类字符。
<!DOCTYPE html>
<html>
<script type="text/javascript">
function showJson(){
var jsonString = '{"array":[1,2,3],"boolean":true,"null":null,"number":123,"object":{"a":"b","c":"d","e":"f"},"string":"Hello World"}';
var obj = JSON.parse(jsonString);
document.getElementById('json_output').innerHTML = "";
document.getElementById('json_output').appendChild(document.createTextNode(JSON.stringify(obj, null, '\t')));
}
</script>
<body>
<input type="button" onclick="showJson();" value="Click Me!!">
<p>STRING FROM DEVICE:</p>
<pre id='json_output'>HI</pre>
</body>
答案 1 :(得分:0)
你有问题:
JSON.stringify(JSON.parse(jsonString), null, '\t');
<pre id='json_output'>HI</pre>