To do this, you can create your own custom resolver. The following contract converter converts all keys to lowercase:
public class LowercaseContractResolver : DefaultContractResolver { protected override string ResolvePropertyName(string propertyName) { return propertyName.ToLower(); } }
Using:
var settings = new JsonSerializerSettings(); settings.ContractResolver = new LowercaseContractResolver(); var json = JsonConvert.SerializeObject(authority, Formatting.Indented, settings);
Wil result:
{"username":"Mark","apitoken":"xyzABC1234"}
If you always want to serialize using LowercaseContractResolver , consider moving it to a class to avoid repetition:
public class LowercaseJsonSerializer { private static readonly JsonSerializerSettings Settings = new JsonSerializerSettings { ContractResolver = new LowercaseContractResolver() }; public static string SerializeObject(object o) { return JsonConvert.SerializeObject(o, Formatting.Indented, Settings); } public class LowercaseContractResolver : DefaultContractResolver { protected override string ResolvePropertyName(string propertyName) { return propertyName.ToLower(); } } }
What can be used as follows:
var json = LowercaseJsonSerializer.SerializeObject(new { Foo = "bar" }); // { "foo": "bar" }
ASP.NET MVC4 / WebAPI
If you use ASP.NET MVC4 / WebAPI, you can use CamelCasePropertyNamesContractResolver from the Newtonsoft.Json library, which is enabled by default.
alexn Jun 09 2018-11-11T00: 00Z
source share