Контекст
Язык: C#
Версия платформы: Microsoft .Net Framework 4.0
Операционная система: Windows 7 Профессиональная (64-разрядная)
Ограничения: Microsoft MVC.Net 3.0
Проблема
В последнее время я часто просматриваю JSON в браузере, указывая браузеру на то или иное действие контроллера на моем локальном сервере разработки и визуально анализируя JSON, чтобы убедиться, что все форматируется так, как мы хотим. JSON, возвращаемый сериализатором MVC 3 (или файл JSON.Net serializer) всегда возвращают минимизированную строку, поэтому я получаю что-то вроде этого:
{"Bars":[{"Name":"Ghost Bar","Address":"2440 Victory Park Lane, 33rd Floor, Dallas, TX 75219","OpenDate":"\/Date(1208062800000)\/","Status":"Open"},{"Name":"M-Street Bar","Address":"5628 Sears Street, Dallas, TX 75206","OpenDate":"\/Date(1064811600000)\/","Status":"Closed"},{"Name":"Zephyr\u0027s Lounge","Address":"3520 Greenville Avenue, Dallas, TX 75206","OpenDate":"\/Date(981007200000)\/","Status":"Open"}]}
Вопрос
Мне бы очень хотелось найти способ, по крайней мере, во время отладки, чтобы JsonResult был "упрощен", поэтому что это выглядит примерно так:
{
"Bars": [
{
"Name": "Ghost Bar",
"Address": "2440 Victory Park Lane, 33rd Floor, Dallas, TX 75219",
"OpenDate": "\/Date(1208062800000)\/",
"Status": "Open"
},
{
"Name": "M-Street Bar",
"Address": "5628 Sears Street, Dallas, TX 75206",
"OpenDate": "\/Date(1064811600000)\/",
"Status": "Closed"
},
{
"Name": "Zephyr\u0027s Lounge",
"Address": "3520 Greenville Avenue, Dallas, TX 75206",
"OpenDate": "\/Date(981007200000)\/",
"Status": "Open"
}
]
}
мне известнынесколькоонлайновыхинструментов , которые позволят вам вставлять и форматировать JSON. Это дополнительный шаг, который стоит мне много времени. Я бы предпочел программное решение. Я также хотел бы иметь возможность включать/выключать его с помощью конфигурации или директивы компилятора #if.
Я уже провел беглый поиск по этому вопросу и наткнулсяна этот пост в Stack Overflow. Однако приведенный пример кода весьма неполный. Есть также пара ссылок, но они кажутся мертвыми.
В любом случае, я хотел бы найти способ получить «преттифицированный» JSON из ActionResult. Любая помощь приветствуется.
Следующий исходный код будет воспроизводить исходную строку JSON без предварительных настроек, которую я привел в качестве примера. Не стесняйтесь копировать/вставлять/редактировать.
using System.Collections.Generic;
using System.Text;
using System.Web.Mvc;
namespace PrettyJsonResult.Controllers
{
public class DefaultController : Controller
{
public JsonResult Index()
{
var foo = new Foo();
foo.Bars.Add(new Bar { Address = "2440 Victory Park Lane, 33rd Floor, Dallas, TX 75219", Name = "Ghost Bar", Status = "Open" });
foo.Bars.Add(new Bar { Address = "5628 Sears Street, Dallas, TX 75206", Name = "M-Street Bar", Status = "Closed" });
foo.Bars.Add(new Bar { Address = "3520 Greenville Avenue, Dallas, TX 75206", Name = "Zephyr's Lounge", Status = "Open" });
return Json(foo, "application/json", Encoding.UTF8, JsonRequestBehavior.AllowGet);
}
}
public class Foo
{
public Foo()
{
Bars = new List();
}
public List Bars { get; set; }
}
public class Bar
{
public string Name { get; set; }
public string Address { get; set; }
public string Status { get; set; }
}
}