Renderuj dowolne JSON w HTML
Piszę stronę przeglądarki danych, aby z serwera wysyłać obiekty jako JSON. Obiekty JSON różnią się zawartością i złożonością, od płaskich obiektów z garstką atrybutów, po większe struktury z kilkoma warstwami zagnieżdżania i pól tablicy. Chciałbym zrobić prostą reprezentację obiektu, prawdopodobnie jako ul. Stamtąd mogę dodawać rzeczy, aby umożliwić klikalne rozwijanie / zwijanie zachowania lub coś takiego.
Wiem, że będzie to wymagało funkcji rekursywnej, którą mogę wywołać na najwyższym poziomie, a która zostanie ponownie wywołana dla każdego wykrytego poziomu zagnieżdżenia. Po prostu nie jestem zbytnio pewny języka JavaScript i nie jestem z nim zbyt daleko. Mam też problem z tym, że nie znam nazw atrybutów - różne obiekty będą miały różne atrybuty, o różnych nazwach.
Czy istnieje stosunkowo prosty sposób na renderowanie obiektu w ten sposób, czy też będę musiał zmienić formę JSON wysyłanego przez serwer?
EDYCJA: Próbki JSON prawdopodobnie niewiele pomogą; różnią się bardzo. Jak powiedziałem, niektóre są proste, niektóre są bardzo złożone. Najprostsze obiekty to coś takiego:
{
"id": "5",
"category": "12",
"created": "25-Sep-2012"
}
natomiast najbardziej złożony, jaki mam obecnie, to coś takiego:
{
"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"
}
}
Jak widać, jest to reprezentacja dziennika błędów JSON, w tym wyjątek zgłoszony przez oprogramowanie (poufne dane zostały zasłonięte). Obiekty JSON są generowane z pola „detail” dziennika inspekcji, więc w przyszłości mogą być rejestrowane inne zdarzenia, których szczegóły są w innym formacie niż wszystko, co przewiduję teraz, dlatego szukam obsługi dowolnych JSON bez poleganie na znajomości formatu.