Is there simple way using JSON in .NET to ensure that the keys are sent as lower case?
At the moment I’m using the newtonsoft’s Json.NET library and simply using
string loginRequest = JsonConvert.SerializeObject(auth);
In this case auth is just the following object
public class Authority
{
public string Username { get; set; }
public string ApiToken { get; set; }
}
This results in
{"Username":"Mark","ApiToken":"xyzABC1234"}
Is there a way to ensure that the username and apitoken keys come through as lowercase?
I don’t want to simply run it through String.ToLower() of course because the values for username and apitoken are mixed case.
I realise I can programatically do this and create the JSON string manually, but I need this for approx 20 or so JSON data strings and I’m seeing if I can save myself some time. I’m wondering if there are any already built libraries that allow you to enforce lowercase for key creation.
You can create a custom contract resolver for this. The following contract resolver will convert all keys to lowercase:
Usage:
Wil result in:
If you always want to serialize using the
LowercaseContractResolver, consider wrapping it in a class to avoid repeating yourself:Which can be used like this:
ASP.NET MVC4 / WebAPI
If you are using ASP.NET MVC4 / WebAPI, you can use a
CamelCasePropertyNamesContractResolverfrom Newtonsoft.Json library which included by default.