2015-07-21 20 views
5

wróciłem do camelcasejson używanegoJak przekonwertować JSON w przypadku wielbłąda z powrotem do przypadku Pascala w Web API?

formatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); 

tak:

Data : Contacts: [{ GivenName: "Matt", FamilyName:"Berry" }] 
result json: contacts: [{ givenName: "Matt", familyName:"Berry" }] 

Jak mogę odzyskać oryginalne dane (pascal danych CASE) w Web API?

+0

Być może mógłbyś wyjaśnić, co próbujesz osiągnąć. Zwykle, gdy klient przekazuje dane do interfejsu API, tworzy się model, z którym JSON może się wiązać, a model wykorzystuje konwencje nazewnictwa .NET. Coś takiego jak: 'public class NameRequest {public string GivenName {get; zestaw; } public string FamilyName {get; zestaw; }} 'Następnie, gdy klient wyśle ​​obiekt JSON, taki jak powyżej, automatycznie mapuje do umowy żądania. –

+0

Klient wysyła zwrot obiektu Json do kontaktów kontrolera: [{givenName: "Matt", familyName: "Berry"}], a następnie wykonuję operację po stronie serwera w kontrolerze. Ale nazwa właściwości json nie została przekształcona w "GivenName". Tak więc wyjątek pokazujący "could not find property givenname", ale jeśli usunąłem serializację cameclcase to działa idealnie –

Odpowiedz

0

Nie powinieneś próbować manipulować JSON, który klient wysyła bezpośrednio. Powinieneś użyć klasy modelu, jak w moim pierwszym komentarzu, i pozwól, aby spinacz modelu rozdzielił JSON na obiekt .NET, z którym możesz łatwiej pracować.

Zakładając, że klient wysyła ci JSON, który wygląda tak:

{givenName: "Matt" FamilyName: "Berry"}

Należy utworzyć klasę .NET otrzymać to żądanie.

public class NameRequest 
{ 
    public string GivenName { get; set; } 
    public string FamilyName { get; set; } 
} 

Teraz możesz zadeklarować argument do swojej metody WebAPI za pomocą umowy.

public IHttpActionResult ProcessNameRequest (NameRequest request) 
{ 
    request.GivenName 
    request.FamilyName 
} 
+1

Dzięki, próbowałem używać klasy modelu. ale wciąż stoi ten sam problem. Problem polega na tym, że po uzyskaniu dostępu do kontrolera nazwa usługi nie może zostać przekształcona w "Nazwa użytkownika". więc wystąpił wyjątek. używam odata webapi. pls powiedz mi jakieś inne sugestie. –

+0

Myślę, że musisz zaktualizować swoje oryginalne pytanie z tym, jak wygląda JSON, który jest przekazywany, jak wygląda Twoja metoda kontrolera i czym jest wyjątek. To, co napisałem powyżej, działa dobrze, zakładając, że Twój JSON wygląda jak to, co napisałem. Najwyraźniej coś o twoim środowisku jest inne niż to, co napisałem. –