10

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
}
4

4 に答える 4

7

Web API を使用している場合。以下を設定できます。

var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
json.SerializerSettings.Formatting = Newtonsoft.Json.Formatting.Indented;
于 2015-04-07T10:27:50.963 に答える
3

これは、 Json.netNuGetパッケージを使用して実行できます。

JObject.Parse(json).ToString(Formatting.Indented)
于 2012-10-21T17:49:55.463 に答える
3

動機:クエリ文字列に orという単語が含まれている場合はきれいに印刷し、クエリ文字列に orprettyprintというprettyprint=true単語がない場合はきれいに印刷しないでください。prettyprintprettyprint=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());       
    }
于 2015-10-21T15:11:22.973 に答える