我有一个JSON,但我不知道它的结构(即将到来的键/值对),我需要在html中显示该信息。我解析即将到来的字符串,并循环它,以便能够以一种良好的方式在页面上显示信息。
<script type="text/javascript" language="JavaScript">
var jsonString = '#{CertificadoBean.certificado.resumen}';
var myObj = JSON.parse(jsonString);
for ( var x in myObj) {
if (myObj[x] instanceof Array) {
document.getElementById("json").innerHTML += "<p>" + "" + "<b>" + x + "</b>" + ": "+JSON.stringify(myObj[x]);
}
else {
document.getElementById("json").innerHTML += "<p>" + "" + "<b>" + x + "</b>" + ": " + myObj[x];
}
}
</script>
但是,在某些情况下,它会打印出以下内容:
Nivel matriculado: 10
Periodo matriculado: 2019-02
Periodos matriculados: 10
Cursos pendientes:[{"Cod.":"NIP01","Nivel":9},{"Cod.":"NI043","Nivel":10},{"Cod.":"ALE10","Nivel":10}]
当循环在json中找到一个数组时,我不能很好地显示信息,并且我不确定如何正确地循环数组,以便像对象的其余部分一样以清晰的方式显示。
我如何使Cursos pendientes像其他的一样显示得很好?
发布于 2019-09-13 00:02:54
要做到这一点,你应该在javascript中使用JSON.stringify。
var str = JSON.stringify(obj, null, 2);
其中obj是您的json。null是一个替换函数(不使用),2是一个间隔(打印时的间隔)
然后,您可以将字符串形式的json放在页面上。
document.body.innerHTML = str
点击此处查看更多信息:Mozilla Developer Json.stringify Reference
发布于 2019-09-13 01:54:17
您可以将JSON包装在<code>
或<pre>
标记中,以获得良好的预览效果
发布于 2019-09-13 01:55:51
如果你真的想把它输出为普通的html,你可以使用一些递归(也许为了更好的布局一些列表)。通过递归,您可以确保所有属性(在数组中或仅在普通属性中)都将以相同的方式显示。如果你打算这样做,你应该关心循环结构,并考虑如何处理它们。也许你应该在输出为html之前完全删除循环。
下面是一个使用列表的递归方法的简单示例:
let object2html = function(obj) {
if(! (obj instanceof Object))
return obj;
return Object.keys(obj).map(key => {
if(obj[key] instanceof Array){
return '<ul>' + obj[key].map(object2html).map(x => '<li>' + x + '</li>').join('') + '</ul>';
}
return key + ' : ' + obj[key];
}).map(toWrap => '<p>' + toWrap + '</p>').join('');
};
看看这把小提琴:https://jsfiddle.net/gqmLf79r/
https://stackoverflow.com/questions/57910492
复制相似问题