jay
jay

Reputation: 434

Newtonsoft JsonProperty Serialization

I am using Newtonsoft JsonProperty attribute to Deserialize some ugly Json data into my class like this :

[JsonProperty("1. open")]
public decimal Open { get; set; }
[JsonProperty("2. high")]
public decimal High { get; set; }

So "1. open" and "2. high" get parsed into Open and High properties etc.

I would like to use these JsonProperties for deserialization only, is that possible? If I were to go and serialize this data back to Json, I would want to get something like this: { Open: 0.00, High: 0.00 }

Upvotes: 0

Views: 688

Answers (1)

Eser
Eser

Reputation: 12546

You can create a ContractResolver as below

public class MyConractResolver: DefaultContractResolver
{
    protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)
    {
        var p = base.CreateProperty(member, memberSerialization);
        p.PropertyName = member.Name;
        return p;
    }
}

and use it at serialization as

var json = JsonConvert.SerializeObject(myobj, new JsonSerializerSettings() { 
                                               ContractResolver = new MyConractResolver()  
                                              });

Upvotes: 1

Related Questions