避免在.NET Core Rest Controller中允许对属性名称使用任何大小写

时间:2018-09-21 08:28:17

标签: c# .net-core

我正在使用[ApiController][FromBody]用.NET core 2.1创建REST控制器。假设我的参数对象是:

public class CreateUserParmeters
{
  public string Name {get; set;}
}

我可以发送的JSON可以是:

{ "name":"Test" }

而且:

{ "Name":"Test" }

甚至:

{ "NaMe":"Test" }

一切正常。我想避免这种情况,只允许name(所以camelCase)。有办法强制执行吗?

3 个答案:

答案 0 :(得分:1)

也许此设置会有所帮助:

private static final String PROP = "c24.properties";
    private Properties properties;

    // Constructor
    public KTServices() {
        try {
            properties = new Properties();
            properties.load(new FileInputStream(PROP)); // FILE NOT FOUND??

        } catch (IOException e) {
            e.printStackTrace();
        }
    }

您尝试过吗?

答案 1 :(得分:0)

我认为您应该调查以下contract resolver

在您的Global.asax中:

var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter; json.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();

答案 2 :(得分:0)

您可以使用模型属性上的JsonProperty属性简单地定义所需的json属性名称。它会根据您的要求进行序列化,尽管在将json反序列化回模型实例时实际上并不区分大小写。

[JsonProperty("name")]
public string Name { get; set; }