2015-07-21 2 views
5

Ich habe json zu camelcase mit kehrteWie konvertiert man JSON in camel case zurück in Pascal case in Web API?

formatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); 

Like this:

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

Wie kann ich die Originaldaten (pascal Falldaten) in Web-API zurück?

+0

Vielleicht könnten Sie erklären, was Sie zu erreichen versuchen. Wenn der Client Daten an die API übergibt, erstellen Sie normalerweise ein Modell, an das der JSON binden kann, und das Modell verwendet .NET-Namenskonventionen. So etwas wie: 'public class NameRequest {öffentliche Zeichenkette GivenName {get; einstellen; } öffentliche Zeichenfolge FamilyName {get; einstellen; }} 'Wenn der Client ein JSON-Objekt wie das obige sendet, wird es automatisch dem Anforderungsvertrag zugeordnet. –

+0

client sendet eine json object return an controller contacts: [{givenName: "Matt", familyName: "Berry"}] dann führe ich eine serverseitige Operation im Controller aus. Aber der json-Propertyname wurde nicht in "GivenName" konvertiert. Also die Ausnahme zeigt "konnte nicht finden Eigenschaft gegebenen Namen", aber wenn ich die cameclcase Serialisierung entfernt, es funktioniert perfekt –

Antwort

0

Sie sollten nicht versuchen, den JSON zu manipulieren, den der Client direkt sendet. Sie sollten eine Modellklasse wie in meinem ersten Kommentar verwenden und den Modellbinder das JSON in ein .NET-Objekt auflösen lassen, mit dem Sie dann leichter arbeiten können.

den Client Unter der Annahme, senden Sie JSON, das wie folgt aussieht:

{given: "Matt", family: "Berry"}

Sie eine .NET-Klasse erstellen sollten empfange diese Anfrage.

Jetzt deklarieren Sie das Argument zu Ihrer WebAPI-Methode mit dem Vertrag.

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

Danke, ich habe versucht, mit Modell-Klasse. aber immer noch vor demselben Problem. Das Problem ist, wenn ich zurück auf den Controller zugreifen kann, kann der Eigenschaftsname nicht zu "Givenname" deserialisiert werden. also ist die Ausnahme eingetreten. Ich benutze die Webapi Odata. Bitte sagen Sie mir weitere Vorschläge. –

+0

Ich denke, Sie müssen Ihre ursprüngliche Frage mit dem, wie der JSON tatsächlich aussieht, der übergeben wird, aktualisieren, wie Ihre Controller-Methode aussieht und was die Ausnahme ist. Was ich oben gepostet habe, wird gut funktionieren, vorausgesetzt, dass dein JSON so aussieht, wie ich es gepostet habe. Offensichtlich ist etwas an deiner Umgebung anders als das, was ich gepostet habe. –

Verwandte Themen