サーバーから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を処理せずに処理しようとしています。フォーマットを知ることに依存しています。