How to detect duplicate keys in Web Api Post request Json

Viewed 1616

I have a requirement to return a 400 error from an ASP.NET Web API Post request when the request Json contains duplicate keys.

For instance if the request was

{
   "key1": "value1",
   "key2": 1000,
   "key2": 2000,
   "key3": "value3"
}

then I would want the error to be thrown due to there being two "key2" keys.

My controller method looks something like

[HttpPost]
public IHttpActionResult PostMethod([FromBody]RequestModel request)
{
   .....
}

and my RequestModel model like

public class RequestModel
{
    [Required]
    public string Key1 {get; set; }

    [Required]
    public int Key2 {get; set; }

    public string Key3 {get; set; } 
}

In the example above the Json serializer seems happy to accept the request and populate Key2 with 2000, or whatever the last instance of the key is.

I am thinking I need to do something involving the JsonSerializerSettings class, or implement a custom JsonConverter, however I am unsure how to proceed.

2 Answers
Related