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.

questionAnswers(4)

yourAnswerToTheQuestion