Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Default camel case of property names in JSON serialization

I have a bunch of classes that will be serialized to JSON at some point and for the sake of following both C# conventions on the back-end and JavaScript conventions on the front-end, I've been defining properties like this:

[JsonProperty(PropertyName="myFoo")] public int MyFoo { get; set; } 

So that in C# I can:

MyFoo = 10; 

And in Javascript I can:

if (myFoo === 10) 

But doing this for every property is tedious. Is there a quick and easy way to set the default way JSON.Net handles property names so it will automatically camel case unless told otherwise?

like image 635
Matt Burland Avatar asked Feb 14 '14 15:02

Matt Burland


People also ask

What is JSON property name?

The Jackson Annotation @JsonProperty is used on a property or method during serialization or deserialization of JSON. It takes an optional 'name' parameter which is useful in case the property name is different than 'key' name in JSON.

Which line of code can you use to format JSON data in camel case?

If you want JsonSerializer class to use camel casing you can do the following: var options = new JsonSerializerOptions() { PropertyNamingPolicy = JsonNamingPolicy. CamelCase }; string json = JsonSerializer. Serialize(empList, options); return Ok(json);

What is JSON property C#?

JsonPropertyAttribute indicates that a property should be serialized when member serialization is set to opt-in. It includes non-public properties in serialization and deserialization. It can be used to customize type name, reference, null, and default value handling for the property value.

Is JSON Net case sensitive?

Json does case sensitive JSON deserialization. Case sensitivity comes into play when a JSON string is being deserialized into an object.


2 Answers

You can use the provided class Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver:

var serializer = new JsonSerializer {     ContractResolver = new CamelCasePropertyNamesContractResolver() }; var jobj = JObject.FromObject(request, serializer); 

In other words, you don't have to create a custom resolver yourself.

like image 171
Big McLargeHuge Avatar answered Sep 22 '22 15:09

Big McLargeHuge


When serializing your object, pass in some custom settings.

var settings = new JsonSerializerSettings {     ContractResolver = new CamelCasePropertyNamesContractResolver() };  var json = JsonConvert.SerializeObject(yourObject, settings); 
like image 39
Pure.Krome Avatar answered Sep 22 '22 15:09

Pure.Krome