2015-07-21 9 views
5

Sono tornato a jsoncamelcase utilizzando,Come convertire JSON in caso cammello in caso Pascal in Web API?

formatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); 

Ti piace questa:

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

Come posso recuperare i dati originali (dati di casi Pascal) in API Web?

+0

Forse potresti spiegare cosa stai cercando di realizzare. Di solito, quando il client passa i dati all'API, si crea un modello a cui JSON può collegarsi e quel modello utilizza le convenzioni di denominazione .NET. Qualcosa come: 'public class NameRequest {public string GivenName {get; impostato; } stringa pubblica FamilyName {get; impostato; }} 'Quindi, quando il client invia un oggetto JSON come quello sopra, verrà automaticamente associato al contratto di richiesta. Il client –

+0

invia un oggetto json ai contatti del controller: [{givenName: "Matt", familyName: "Berry"}] quindi eseguirò operazioni sul lato server nel controller. Ma il nome proprietà json non è stato convertito in "GivenName". Quindi l'eccezione che mostra "non è stato possibile trovare la proprietà givenname", ma se ho rimosso la serializzazione di cameclcase è perfettamente funzionante –

risposta

0

Non si dovrebbe tentare di manipolare il JSON inviato dal client direttamente. Dovresti usare una classe modello come nel mio primo commento e lasciare che il raccoglitore modello risolva il JSON in un oggetto .NET che puoi quindi lavorare con più facilità.

Supponendo che il client invia si JSON che è simile al seguente:

{givenName: "Matt", familyName: "Berry"}

Si dovrebbe creare una classe .NET per ricevere quella richiesta.

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

Ora si dichiara l'argomento del metodo WebAPI utilizzando il contratto.

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

Grazie, ho provato a utilizzare la classe del modello. ma ancora affrontando lo stesso problema. il problema è quando accedo al controller, il nome della proprietà non può essere deserializzato in "Givenname". quindi si è verificata l'eccezione. sto usando il webapi odata. per favore, ditemi altri suggerimenti –

+0

Penso che sia necessario aggiornare la domanda originale con l'aspetto reale del JSON che viene passato, quale sia il metodo del controller e quale sia l'eccezione. Quello che ho postato sopra funzionerà bene, assumendo che il tuo JSON assomigli a quello che ho postato. Chiaramente qualcosa sul tuo ambiente è diverso da quello che ho postato. –

Problemi correlati