JsonConvert不正确反序列化对象
问题描述:
我只需遵循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");
任何人都已经有这个问题,能帮帮我吗?
答
添加一个新类:
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)或更改代码(按照我的课程)。
答案帮助@michelalmeida? – mjwills