Визуализировать произвольный JSON в HTML
Я пишу страницу просмотра данных для визуализации объектов, отправляемых в виде JSON с сервера. Объекты JSON различаются по содержанию и сложности: от плоских объектов с несколькими атрибутами и до более крупных структур с несколькими слоями вложенности и массивами. Что я хотел бы сделать, это сделать простое представление объекта, вероятно, как ул. Оттуда я могу добавить материал, позволяющий кликабельно развернуть / свернуть поведение или что-то еще.
Я знаю, что для этого потребуется рекурсивная функция, которую я могу вызвать на верхнем уровне, которая затем будет вызываться снова для каждого обнаруженного уровня вложенности. Я просто не очень уверен в 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":"[email protected]",
"userId":"25",
"userRole":"User"
}
}
Как видите, это JSON-представление журнала ошибок, в том числе исключения, выдаваемого программным обеспечением (конфиденциальные детали скрыты). Объекты JSON генерируются из поля «detail» журнала аудита, поэтому в будущем могут регистрироваться другие события, чьи данные находятся в другом формате, чем то, что я предсказываю сейчас, поэтому я пытаюсь обработать произвольный JSON без опора на знание формата.