2013-08-05 17 views
8

Sonuç olarak seri hale getirilmiş JSON'un öznitelikler için lowercase_underscore kullandığı ASP.NET MVC'deki bir REST API'sı üzerinde çalışıyorum.Özel Json.NET küçük harf alt yapısı için sözleşme çözücü CamelCase

{ 
    first_name: "Charlie", 
    surname: "Brown" 
} 

Not lowercase_underscore isimleri şöyledir: Dizge özellikleri FirstName ve Surname bir sınıfa Person itibaren

, ben JSON olsun.

benim için otomatik olarak bu dönüşüm yapmak için kullandığımız sözleşme çözümleyici geçerli:

public class JsonLowerCaseUnderscoreContractResolver : DefaultContractResolver 
{ 
    private Regex regex = new Regex("(?!(^[A-Z]))([A-Z])"); 

    protected override string ResolvePropertyName(string propertyName) 
    { 
     return regex.Replace(propertyName, "_$2").ToLower(); 
    } 
} 

Bu, tüm iyi çalışır, ama Json.NET ile ters nasıl uygulanacağı bilmiyorum. Yani şöyle ki, örneğin, bir API yöntemini ilan edebilir ve uygun nesneye isteği gövdesine gelen JSON dönüştürmek bilir:

public object Put(int id, [FromBody] Person person) 

cevap

2

Tamam, çözüm bulundu. Person sınıfı için varsayılan bir kurucu eksikti. Bunu yaptıktan sonra eşleme, Put yöntemini çağırırken çalıştı. Aslında, FromBody belirtecini de kaldırabilirim:

public object Put(int id, Person person) 
İlgili konular