如何使用 MVC 4 API 获得以下 JSON 响应以使其看起来更清晰。这是一个示例 JSON
{"Name":"Apple","Expiry":"2008-12-28T00:00:00","Price":3.99}
漂亮的 JSON
{
"Name":"Apple",
"Expiry":"2008-12-28T00:00:00",
"Price":3.99
}
如何使用 MVC 4 API 获得以下 JSON 响应以使其看起来更清晰。这是一个示例 JSON
{"Name":"Apple","Expiry":"2008-12-28T00:00:00","Price":3.99}
漂亮的 JSON
{
"Name":"Apple",
"Expiry":"2008-12-28T00:00:00",
"Price":3.99
}
如果您使用的是 Web Api。您可以设置:
var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
json.SerializerSettings.Formatting = Newtonsoft.Json.Formatting.Indented;
您可以使用Json.net NuGet 包执行此操作:
JObject.Parse(json).ToString(Formatting.Indented)
动机:如果查询字符串包含单词prettyprint
or ,则漂亮打印,如果查询字符串中没有单词 or prettyprint=true
,则不要漂亮打印。prettyprint
prettyprint=false
注意:此过滤器检查每个请求中的漂亮打印。默认关闭漂亮打印功能很重要,仅在请求时启用。
第 1 步:定义自定义操作过滤器属性,如下所示。
public class PrettyPrintFilterAttribute : ActionFilterAttribute
{
/// <summary>
/// Constant for the query string key word
/// </summary>
const string prettyPrintConstant = "prettyprint";
/// <summary>
/// Interceptor that parses the query string and pretty prints
/// </summary>
/// <param name="actionExecutedContext"></param>
public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
{
JsonMediaTypeFormatter jsonFormatter = actionExecutedContext.ActionContext.RequestContext.Configuration.Formatters.JsonFormatter;
jsonFormatter.SerializerSettings.Formatting = Newtonsoft.Json.Formatting.None;
var queryString = actionExecutedContext.ActionContext.Request.RequestUri.Query;
if (!String.IsNullOrWhiteSpace(queryString))
{
string prettyPrint = HttpUtility.ParseQueryString(queryString.ToLower().Substring(1))[prettyPrintConstant];
bool canPrettyPrint;
if ((string.IsNullOrEmpty(prettyPrint) && queryString.ToLower().Contains(prettyPrintConstant)) ||
Boolean.TryParse(prettyPrint, out canPrettyPrint) && canPrettyPrint)
{
jsonFormatter.SerializerSettings.Formatting = Newtonsoft.Json.Formatting.Indented;
}
}
base.OnActionExecuted(actionExecutedContext);
}
}
第 2 步:全局配置此过滤器。
public static void Register(HttpConfiguration config)
{
config.Filters.Add(new PrettyPrintFilterAttribute());
}
如果它是您要序列化为 JSON 的对象,您只需添加一个参数来“美化”它。
JsonConvert.SerializeObject(object, Formatting.Indented);