我有这个简单地遵循我想要DeserializeObject对象的json和类。
{"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 :(得分:4)
添加新课程:
public class UnsubscribeResponsewrapper
{
public UnsubscribeResponse UnsubscribeResponse { get; set; }
}
然后使用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)或更改代码(根据我的类)。