首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在不知道JSON的结构和数据的情况下,如何以可读的方式显示JSON中的信息?

在不知道JSON的结构和数据的情况下,如何以可读的方式显示JSON中的信息?
EN

Stack Overflow用户
提问于 2019-09-12 23:54:56
回答 3查看 56关注 0票数 0

我有一个JSON,但我不知道它的结构(即将到来的键/值对),我需要在html中显示该信息。我解析即将到来的字符串,并循环它,以便能够以一种良好的方式在页面上显示信息。

代码语言:javascript
运行
复制
<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 += "&lt;p>" + "" + "&lt;b>" + x + "&lt;/b>" + ": "+JSON.stringify(myObj[x]);
      }
      else {
          document.getElementById("json").innerHTML += "&lt;p>" + "" + "&lt;b>" + x + "&lt;/b>" + ": " + myObj[x];
      }
  }
</script>

但是,在某些情况下,它会打印出以下内容:

代码语言:javascript
运行
复制
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像其他的一样显示得很好?

EN

回答 3

Stack Overflow用户

发布于 2019-09-13 00:02:54

要做到这一点,你应该在javascript中使用JSON.stringify。

代码语言:javascript
运行
复制
var str = JSON.stringify(obj, null, 2);

其中obj是您的json。null是一个替换函数(不使用),2是一个间隔(打印时的间隔)

然后,您可以将字符串形式的json放在页面上。

代码语言:javascript
运行
复制
document.body.innerHTML = str

点击此处查看更多信息:Mozilla Developer Json.stringify Reference

票数 1
EN

Stack Overflow用户

发布于 2019-09-13 01:54:17

您可以将JSON包装在<code><pre>标记中,以获得良好的预览效果

票数 0
EN

Stack Overflow用户

发布于 2019-09-13 01:55:51

如果你真的想把它输出为普通的html,你可以使用一些递归(也许为了更好的布局一些列表)。通过递归,您可以确保所有属性(在数组中或仅在普通属性中)都将以相同的方式显示。如果你打算这样做,你应该关心循环结构,并考虑如何处理它们。也许你应该在输出为html之前完全删除循环。

下面是一个使用列表的递归方法的简单示例:

代码语言:javascript
运行
复制
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/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57910492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档