【问题标题】:JsonFormatter in WebApi is ignoredWebApi 中的 JsonFormatter 被忽略
【发布时间】:2015-07-01 10:56:49
【问题描述】:

我需要配置 Web API 的 JSON 输出。

当我直接在属性上设置 JsonProperty-Attribute 时,它​​可以工作。 但是 JsonFormatter 设置的更改(在 Register 方法中)被完全忽略。

    public static void Register(HttpConfiguration config)
    {
        // Web API configuration and services   

        config.Formatters.JsonFormatter.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
        config.Formatters.JsonFormatter.SerializerSettings.ContractResolver  = new CamelCasePropertyNamesContractResolver();

        // ...
    }

我做错了什么?

【问题讨论】:

  • 试试这样 - GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings = new Newtonsoft.Json.JsonSerializerSettings() { NullValueHandling = NullValueHandling.Include, ContractResolver = new CamelCasePropertyNamesContractResolver() };
  • 设置 GlobalConfiguration 也会被忽略。
  • 如何将“config”传递给Register函数?新的 HttpConfiguration () ?
  • Register 是从 Global.asax 中的 Application_Start 调用的。 -> GlobalConfiguration.Configure(WebApiConfig.Register);

标签: asp.net-web-api json.net asp.net-web-api2


【解决方案1】:

我的错。

在 WebApi 中,我使用了 Azure DocumentDB。

所以我 - 当然 - 配置 DocumentDB 序列化程序来格式化 Json 文档。

    static DocumentDbRepository()
    {


        JsonConvert.DefaultSettings = () =>
            {
                return new JsonSerializerSettings
                           {
                               NullValueHandling = NullValueHandling.Ignore,
                               TypeNameHandling = TypeNameHandling.Objects,  

                               //serializing works, but Linq to DocumentDB provider seems to ignore the ContractResolver. -> [JsonProperty]
                               //ContractResolver = new CamelCasePropertyNamesContractResolver(),
                           };
            };


    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-01
    • 1970-01-01
    • 2016-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-02
    • 2013-06-22
    相关资源
    最近更新 更多