Beliebiges JSON in HTML rendern

Ich schreibe eine Datenbetrachter-Seite, um Objekte zu rendern, die vom Server als JSON gesendet werden. Die JSON-Objekte variieren in Inhalt und Komplexität, von flachen Objekten mit wenigen Attributen bis zu größeren Strukturen mit mehreren Ebenen von Verschachtelungs- und Arrayfeldern. Was ich tun möchte, ist eine einfache Darstellung des Objekts, wahrscheinlich als ul. Zu rendern. Von dort aus kann ich Dinge hinzufügen, um klickbares Expand / Collapse-Verhalten oder etwas zu ermöglichen.

Ich weiß, dass dies eine rekursive Funktion erfordert, die ich auf der obersten Ebene aufrufen kann, die dann für jede entdeckte Verschachtelungsebene erneut aufgerufen wird. Ich bin mit Javascript einfach nicht sehr sicher und komme nicht sehr weit damit. Ich habe auch Probleme mit der Tatsache, dass ich die Attributnamen nicht kenne - unterschiedliche Objekte haben unterschiedliche Attribute mit unterschiedlichen Namen.

Gibt es eine relativ einfache Möglichkeit, ein Objekt wie dieses zu rendern, oder muss ich die Form des vom Server gesendeten JSON ändern?

BEARBEITEN: Beispiele von JSON werden wahrscheinlich nicht viel helfen; Sie variieren stark. Wie ich schon sagte, manche sind einfach, manche sind sehr komplex. Die einfachsten Objekte sind etwa so:

{
    "id": "5",
    "category": "12",
    "created": "25-Sep-2012"
}

Das komplexeste, das ich derzeit habe, ist ungefähr so:

{
   "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"
   }
}

Wie Sie sehen, handelt es sich um eine JSON-Darstellung eines Fehlerprotokolls, einschließlich der von der Software ausgelösten Ausnahme (vertrauliche Details wurden verdeckt). Die JSON-Objekte werden aus dem "Detail" -Feld eines Überwachungsprotokolls generiert, sodass in Zukunft möglicherweise andere Ereignisse protokolliert werden, deren Details in einem anderen Format vorliegen als das, was ich jetzt vorhersage, weshalb ich willkürlich mit JSON umgehen möchte Vertrauen auf die Kenntnis des Formats.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage