如何解决不能做 Convert.Deserialize
当我尝试反序列化响应数据时出现错误
"无法将当前 JSON 数组(例如 [1,2,3])反序列化为类型 'CModellasstype' 因为该类型需要一个 JSON 对象(例如 {"name":"value"}) 正确反序列化。"
string responseData = responseCategory.Content.ReadAsstringAsync().Result;
UploadApiResponse UploadApiResponseModel = JsonConvert.DeserializeObject<UploadApiResponse>(responseData);
public class UploadApiResponse
{
public int StatusCode { get; set; }
public string Message { get; set; }
public bool IsError { get; set; }
public Data Data { get; set; }
}
public class Data
{
public string Accesstoken { get; set; }
}
{
"StatusCode":1,"Message":"Invalid Parameter.","IsError":true,"Data":[
"CurrencyCode is empty or (greater then 3 or less then 3)"
]
}
解决方法
JSON 与您的模型不匹配。您的 JSON 正在传递 Data 对象的字符串集合。
为了正确反序列化您当前的 JSON,您需要将 UploadApiResponse 类修改为以下内容:
public class UploadApiResponse
{
public int StatusCode { get; set; }
public string Message { get; set; }
public bool IsError { get; set; }
public string[] Data { get; set; }
}
查看您在 JSON 的 Data 元素中传递的数据,看起来您正在尝试传递更多异常详细信息,而不是 AccessToken。
如果您有权修改 JSON,则可以将其修改为以下内容:
{
"StatusCode":1,"Message":"Invalid Parameter","IsError":true,"Data": {
"InnerException":"CurrencyCode is empty or (greater then 3 or less then 3)","AccessToken": ""
}
}
然后您可以按如下方式更新您的模型:
public class UploadApiResponse
{
public int StatusCode { get; set; }
public string Message { get; set; }
public bool IsError { get; set; }
public Data Data { get; set; }
}
public class Data
{
public string InnerException { get; set; }
public string AccessToken { get; set; }
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。