在JSON Web-API上公开的对象-如何停止更改属性名称的大小写?

时间:2019-02-08 10:48:27

标签: c# json asp.net-mvc

我有一个看起来像这样的对象模型:

{
     "productCode": 1,
     "productInfo": "Product number 1"
}

我正在通过Dapper填充它,并将其暴露给angular.js使用者,但是JSON中的属性名称显示为:

{
     "ProductCode": 1,
     "ProductInfo": "Product number 1"
}

请特别注意骆驼的情况。我希望它与原始声明的名称匹配,即

{{1}}

我该怎么做?

2 个答案:

答案 0 :(得分:6)

内幕下,最有可能Web-API使用JSON.Net作为JSON序列化引擎;这意味着您可以使用JSON.Net的属性控制输出,例如:

public class Product
{
    [JsonProperty("ProductCode")]
    public string ProductCode { get; set; }
    [JsonProperty("ProductInfo")]
    public string ProductInfo { get; set; }
}

没有这些,JSON.Net使用约定和配置-常规的JSON约定使用驼峰式,因此这是默认设置。您还可以 更改默认配置,但是我建议您不要这样做,除非您了解影响的范围。

答案 1 :(得分:0)

使用此代码可防止 Newtonsoft.Json 序列化程序更改属性名称大小写:

services.AddControllers().AddNewtonsoftJson(options=>
{
    options.SerializerSettings.ContractResolver = new DefaultContractResolver() {  };
});

或者对于 System.Text.Json:

services.AddControllersWithViews().AddJsonOptions(options =>
{
    options.JsonSerializerOptions.PropertyNamingPolicy = null;
});