禁用 Newtonsoft 更改 JSON 大小写
Disable Newtonsoft changing JSON case
我有一个文档,其中有一个字段:
{
FOB: "..."
}
然而当我return它时:
[HttpGet("{documentRef}")]
public ActionResult<Ten> Get(string documentRef)
{
var data = _service.FindOneTen(documentRef);
if (data != null) return data;
Response.StatusCode = 400;
return NotFound();
}
转换为:
{
fob: "..."
}
我怎样才能阻止这种情况发生/为什么会发生这种情况?
我见过有人使用
的例子
PropertyNamingPolicy = null;
为 MVC/正常 JSON 禁用它,我试过了但没有用。
启动:
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers().AddNewtonsoftJson();
}
编辑
虽然 以一种方式解决了问题,但我宁愿不需要为模型中的每个字段指定。
如果您使用的是 .net 核心。您可以尝试使用默认的 .net 核心序列化程序,它应该保留原始外壳。
System.Text.Json.JsonSerializer.Serialize()
此外,您需要在 Startup.ConfigureServices()
中进行配置
services.AddMvc().AddJsonOptions(o => o.JsonSerializerOptions.PropertyNamingPolicy = null);
如果你需要使用Json.net然后使用这个
services.AddMvc().AddNewtonsoftJson(o =>
{
o.SerializerSettings.ContractResolver = new DefaultContractResolver();
});
使用这个
services.AddControllers().AddNewtonsoftJson(options=>
{
options.SerializerSettings.ContractResolver = new DefaultContractResolver() { };
});
我有一个文档,其中有一个字段:
{
FOB: "..."
}
然而当我return它时:
[HttpGet("{documentRef}")]
public ActionResult<Ten> Get(string documentRef)
{
var data = _service.FindOneTen(documentRef);
if (data != null) return data;
Response.StatusCode = 400;
return NotFound();
}
转换为:
{
fob: "..."
}
我怎样才能阻止这种情况发生/为什么会发生这种情况?
我见过有人使用
的例子PropertyNamingPolicy = null;
为 MVC/正常 JSON 禁用它,我试过了但没有用。
启动:
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers().AddNewtonsoftJson();
}
编辑
虽然
如果您使用的是 .net 核心。您可以尝试使用默认的 .net 核心序列化程序,它应该保留原始外壳。
System.Text.Json.JsonSerializer.Serialize()
此外,您需要在 Startup.ConfigureServices()
中进行配置services.AddMvc().AddJsonOptions(o => o.JsonSerializerOptions.PropertyNamingPolicy = null);
如果你需要使用Json.net然后使用这个
services.AddMvc().AddNewtonsoftJson(o =>
{
o.SerializerSettings.ContractResolver = new DefaultContractResolver();
});
使用这个
services.AddControllers().AddNewtonsoftJson(options=>
{
options.SerializerSettings.ContractResolver = new DefaultContractResolver() { };
});