2017-07-29 71 views
1

我只需遵循json和類,我想要DeserializeObject對象。JsonConvert不正確反序列化對象

{"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; } 
} 

我剛剛嘗試使用以下方法,但其中任何人都適合我。

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


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

的唯一方法,它工作,我不得不使用JObject類象下面這樣:

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

任何人都已經有這個問題,能幫幫我嗎?

+0

答案幫助@michelalmeida? – mjwills

回答

4

添加一個新類:

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

,然後而不是讀/ deserialising爲UnsubscribeResponse,使用UnsubscribeResponseWrapper代替。這是必要的,因爲你的JSON是:

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

爲了您代碼工作,JSON需要是這樣的:

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

你需要額外的類,因爲你的JSON有UnsubscribeResponse財產。我懷疑你正在看你的JSON,並認爲這是一個UnsubscribeResponse對象及其屬性但這實際上並不是你的JSON。這是這是一個對象,具有UnsubscribeResponse屬性(並且該屬性具有一組自己的屬性)。因此,您需要更改JSON(按照我更改的JSON)或更改代碼(按照我的課程)。