Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 如何在MVC4API中漂亮地打印JSON脚本_Asp.net Mvc_Json_Asp.net Mvc 4 - Fatal编程技术网

Asp.net mvc 如何在MVC4API中漂亮地打印JSON脚本

Asp.net mvc 如何在MVC4API中漂亮地打印JSON脚本,asp.net-mvc,json,asp.net-mvc-4,Asp.net Mvc,Json,Asp.net Mvc 4,如何使用MVC4API获得以下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 } 您可以使用NuGet软件包执行此操作: JObject.Parse(json).ToString(Formatting.Indent

如何使用MVC4API获得以下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
}
您可以使用NuGet软件包执行此操作:

JObject.Parse(json).ToString(Formatting.Indented)

如果它是一个要序列化为JSON的对象,那么只需添加一个参数来“美化”它


如果您使用的是Web Api。您可以设置:

var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
json.SerializerSettings.Formatting = Newtonsoft.Json.Formatting.Indented;

动机:如果查询字符串包含单词
prettyprint
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);
    }
}
您可以在此周围添加
#if DEBUG
#endif
,因此这仅在调试时使用
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);
    }
}
public static void Register(HttpConfiguration config)
    {            
        config.Filters.Add(new PrettyPrintFilterAttribute());       
    }