2013-08-05 7 views
8

Pracuję nad interfejsem API REST w środowisku ASP.NET MVC, w którym wynikowy serializowany JSON korzysta z atrybutów o wartości smallcase_underscore.Niestandardowy rezolwer Json.NET dla podkreślenia małych liter w CamelCase

z klasy Person o właściwościach smyczkowych FirstName i Surname, otrzymuję JSON następująco:

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

Zanotuj nazwy lowercase_underscore.

Program rozpoznawania kontrakt używam to zrobić konwersję automatycznie dla mnie jest:

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(); 
    } 
} 

To wszystko działa dobrze, ale nie wiem jak zaimplementować odwróconych Json.NET. Tak, że na przykład, mogę zadeklarować metodę API następująco, i wie do konwersji przychodzącego JSON w organizmie żądanie do odpowiedniego obiektu:

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

Odpowiedz

2

OK, znalazł rozwiązanie. Brakowało domyślnego konstruktora dla klasy Person. Kiedy to zrobiłem, mapowanie zadziałało podczas wywoływania metody Put. W rzeczywistości mogę również usunąć specyfikator FromBody:

public object Put(int id, Person person) 
Powiązane problemy