2016-03-03 177 views
21

试图设置JsonOutputFormatter选项:JsonSerializerSettings和Asp.Net核心

var jsonFormatter = (JsonOutputFormatter) options.OutputFormatters.FirstOrDefault(f => f is JsonOutputFormatter); 
if (jsonFormatter != null) 
{ 
    jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); 
} 

mvcBuilder.AddJsonOptions(jsonOptions => 
    { 
     jsonOptions.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); 
    }); 

但只要我添加此,我得到:

MissingMethodException:方法未找到:' Newtonsoft.Json.JsonSerializerSettings Microsoft.AspNet.Mvc.Formatters.JsonOutputFormatter.get_SerializerSettings()'。

我使用的是标准的Microsoft.AspNet.Mvc.Formatters.Json (6.0.0-rc1-final)

编辑:通过安装Newtonsoft.Json 6.0.6(该降级的所有其他引用)解决它

任何人都得到一个已经? 谢谢..

+1

凡你想插入代码片段?什么是'mvcBuilder'?你可以在'Startup.cs'中包含'ConfigureServices'方法的代码吗?这是调用AddJsonOptions的正确位置。 – Oleg

+0

这只是今天随机发生的事情。老实说,它昨天正在工作,这真的让我感到困惑。 –

回答

1

我假设你正在使用ASP.Net的核心,你应该使用 “Microsoft.AspNetCore.Mvc”:此

"Microsoft.AspNet.Mvc": "6.0.0-rc1-final" 

所以更换此

"Microsoft.AspNetCore.Mvc": "1.0.0-rc2-final" 
42

.Net Core 1.0 RTM自带的CamelCase格式化开箱即用。这是来自RC2的行为change。但是,如果需要修改它,试试这个片断:

services.AddMvc() 
     .AddJsonOptions(opt => 
    { 
     var resolver = opt.SerializerSettings.ContractResolver; 
     if (resolver != null) 
     { 
      var res = resolver as DefaultContractResolver; 
      res.NamingStrategy = null; // <<!-- this removes the camelcasing 
     } 
    }); 

更多信息here

对于DOTNET核心1.0.1:

services 
      .AddMvcCore() 
      .AddJsonFormatters(o => o...); 
+1

非常感谢!我无法弄清楚自动骆驼套在哪里发生。 –

+4

任何想法.net核心1.1中的这个调用是什么? –

+0

@LeviFuller它是一样的 - 'AddJsonOptions' – chester89