29 Eylül 2017 Cuma

NewTonsoft DefaultContractResolver Sınıfı

CreateProperties metodu
Örnek
Elimizde şöyle bir sınıf olsun
class LongNameContractResolver : DefaultContractResolver
{
  protected override IList<JsonProperty> CreateProperties(Type type,alo
    MemberSerialization memberSerialization)
  {
    // Let the base class create all the JsonProperties 
    // using the short names
    IList<JsonProperty> list = base.CreateProperties(type, memberSerialization);

    // Now inspect each property and replace the 
    // short name with the real property name
    foreach (JsonProperty prop in list)
    {
      prop.PropertyName = prop.UnderlyingName;
    }

    return list;
  }
}
Şu sınıfı Json'a çevirmek isteyelim.
class Foo
{
  [JsonProperty("cust-num")]
  public string CustomerNumber { get; set; }
  [JsonProperty("cust-name")]
  public string CustomerName { get; set; }
}
Şöyle yaparız
JsonSerializerSettings settings = new JsonSerializerSettings();
settings.Formatting = Formatting.Indented;
settings.ContractResolver = new LongNameContractResolver();

return JsonConvert.SerializeObject(obj, settings);
JsonProperty nesnesinin PropertyName alanını değiştirdiğimiz için belirtilen isimler yerine alanın kendi ismi kullanılır. Çıktı olarak şunu alırız.
{
  "CustomerNumber": "BG60938",
  "CustomerName": "Bubba Gump Shrimp Company"
}

Hiç yorum yok:

Yorum Gönder