DefaultContractResolver etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
DefaultContractResolver etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

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"
}