我正在编写一个数据查看器页面来呈现从服务器作为 JSON 发送的对象。JSON 对象的内容和复杂性各不相同,从具有少量属性的平面对象到具有多层嵌套和数组字段的较大结构。我想做的是渲染对象的简单表示,可能是 ul。从那里我可以添加东西以允许可点击的展开/折叠行为或其他东西。
我知道这将需要一个递归函数,我可以在顶层调用它,然后它会在它发现的每一层嵌套中再次调用它。我只是对 Javascript 不是很有信心,而且我对它的了解也不远。我也遇到了我不知道属性名称的问题 - 不同的对象将具有不同的属性,具有不同的名称。
有没有一种相对简单的方法来呈现这样的对象,还是我必须改变服务器发送的 JSON 的形式?
编辑: JSON 样本可能不会有太大帮助;它们变化很大。就像我说的,有些很简单,有些非常复杂。最简单的对象是这样的:
{
"id": "5",
"category": "12",
"created": "25-Sep-2012"
}
而我目前最复杂的一个是这样的:
{
"Attempted":"EditUser",
"Exception":{
"Message":"Something",
"TargetSite":"somewhere",
"Inner Exception":{
"Message":"Something else",
"TargetSite":"somewhere.core",
"Inner Exception":{
"Message":"Another message",
"TargetSite":"something.core.subr",
"Inner Exception":{
"Message":"Object reference not set to an instance of an object.",
"TargetSite":"System.Web.Mvc.ActionResult Update(Int32, System.String, System.String)",
"StackTrace":[
"at Application.Controllers.AdminController.Update(Int32 id, String email, String password) in c:\\Docs\\Apps\\Main\\MyBranch\\Source\\Application\\Application\\Controllers\\AdminController.cs:line 123"
],
"Inner Exception":{
}
}
}
}
},
"details":{
"userEmail":"test@email.com",
"userId":"25",
"userRole":"User"
}
}
如您所见,它是错误日志的 JSON 表示,包括软件抛出的异常(敏感细节已被掩盖)。JSON 对象是从审计日志的“详细信息”字段生成的,因此将来可能会记录其他事件,其详细信息的格式与我现在预测的任何内容不同,这就是为什么我希望处理任意 JSON 而不依赖于知道格式。