In my Controller, I have an action that returns JSON data as such:\[code\][HttpGet]public ActionResult AjaxJson(){ var ret = new List<dynamic>(); ret.Add(new{ Make = "Honda", Year = 2011, }); ret.Add(new{ Make = "BMW", Fun = true }); return Json(new { json = ret }, JsonRequestBehavior.AllowGet);}\[/code\]I'm a bit concern about the use of \[code\]dynamic\[/code\] keyword because the items in the list is actually anonymous type. But there is noway to create a list of anonymous type.My second question (not as important) is that if I return my JSON data as array. on the client, to get to \[code\]Honda\[/code\], I have to reference it this way: \[code\]data.json[0].Make\[/code\]But I want be able to do it this way: \[code\]data.json.MyWeekdayCar.Make\[/code\]I know that if I return JSON data as object (controller action listed later), I can reference \[code\]Honda\[/code\] with \[code\]data.json.MyWeekdayCar.Make\[/code\], but I'll lose the ability to get its length with \[code\]data.json.length\[/code\]. Is there a way to get the best of both world - able to use \[code\]data.json.MyWeekdayCar.Make\[/code\] and count the number of objects on client side?Controller to return JSON data as object:\[code\][HttpGet]public ActionResult AjaxJson(){ var ret = new{ MyWeekdayCar = new{ Make = "Honda", Year = 2011 }, MyWeekendCar = new{ Make = "BMW", Fun = true }, length = 2 // this makes client side data.json.length work, but it doesn't feel normal. }; return Json(new { json = ret }, JsonRequestBehavior.AllowGet);}\[/code\]EDITAre there side effects or unintended problems for using a list of dynamic with anonymous objects?