2017-07-29 6 views
1

Ich habe dies einfach folgen Json und Klasse, die ich DeserializeObject Objekt wollen.JsonConvert Objekt nicht korrekt deserialisiert

{"UnsubscribeResponse": { 
    "txId": "123", 
    "result": "Success", 
    "message": "OK" 
}} 

public class UnsubscribeResponse 
{ 
    public string TxId { get; set; } 

    public string Result { get; set; } 

    public string Message { get; set; } 
} 

Ich habe gerade versucht, die folgenden Ansätze zu verwenden, aber jeder von ihnen arbeitet für mich.

unsubscribeResponse = await response.Content.ReadAsAsync<UnsubscribeResponse>(); 


unsubscribeResponse = JsonConvert.DeserializeObject<UnsubscribeResponse>(contents, new JsonSerializerSettings() 
{ 
    ContractResolver = new CamelCasePropertyNamesContractResolver(), 
         ObjectCreationHandling = ObjectCreationHandling.Auto 
}); 

Der einzige Weg, dass es funktionierte ich wie unter den JObject Klasse zu verwenden hatte: hatte

var resp = JObject.Parse(contents).SelectToken("UnsubscribeResponse"); 

Wer bereits dieses Problem und kann mir helfen?

+0

Hat die Antwort @michelalmeida geholfen? – mjwills

Antwort

4

eine neue Klasse hinzufügen:

public class UnsubscribeResponsewrapper 
{ 
    public UnsubscribeResponse UnsubscribeResponse { get; set; } 
} 

und dann eher als das Lesen/deserialising als UnsubscribeResponse, UnsubscribeResponseWrapper stattdessen verwenden. Dies ist notwendig, da Ihre JSON ist:

{"UnsubscribeResponse": { 
    "txId": "123", 
    "result": "Success", 
    "message": "OK" 
}} 

Für Ihre ursprünglichen Code zu arbeiten, müsste die JSON etwas sein wie:

{ 
    "txId": "123", 
    "result": "Success", 
    "message": "OK" 
} 

Sie die Extraklasse benötigen, da Ihre JSON hat die UnsubscribeResponse Eigentum. Ich vermute, dass Sie Ihren JSON betrachten und denken Dies ist ein UnsubscribeResponse Objekt und seine Eigenschaften. Aber das ist nicht das, was dein JSON ist. Es ist Dies ist ein Objekt, mit einer Eigenschaft (und diese Eigenschaft hat eine Reihe von eigenen Eigenschaften). Als solches müssen Sie entweder den JSON ändern (gemäß meinem geänderten JSON) oder den Code ändern (gemäß meiner Klasse).

Verwandte Themen