我在 VS2017 中使用 ASP.NET Core 2.0。
我正在尝试反序列化一些在 an 返回的 JSON,HttpResponseMessage
但我收到“无法转换类型的对象...”异常。
这是失败的代码;
FilesUploadedListResponse fileUploadListResponse = new FilesUploadedListResponse();
string jsonResult = response.Content.ReadAsStringAsync().Result;
fileUploadListResponse = (FilesUploadedListResponse)JsonConvert.DeserializeObject(jsonResult);
最后一行是我得到异常的地方......
"Unable to cast object of type 'Newtonsoft.Json.Linq.JObject' to type 'FilesUploadedListResponse'."
这是字符串中的实际 Json jsonResult
:
"{\"uploadedfiles\":[],\"totalResults\":0,\"pageNumber\":0,\"pageSize\":0}"
这个结果中的uploadedFiles
数组是空的,因为还没有上传的文件,但我认为让它为空不应该产生异常,不是吗?如果它不为空,它将有类似这样的响应:
{
"uploadedFiles": [
{
"id": 1,
"createdTime": "July 10, 2017 02:02:25 PM",
"filename": "20170710_14022507701.jpg",
"sentTime": "July 10, 2017 02:05:11 PM",
"fileSize": "124 KB"
},
{
"id": 2,
"createdTime": "June 05, 2017 09:39:25 AM",
"filename": "20170605_093907701.jpg",
"sentTime": "June 05, 2017 09:40:11 AM",
"fileSize": "1 MB"
}
],
"totalResults": 2,
"pageNumber": 0,
"pageSize": 2
}
这是我的FileUploadListResponse
课:
public class FilesUploadedListResponse
{
public bool Success { get; set; }
public string Reason { get; set; }
public int StatusCode { get; set; }
public List<UploadedFile> UploadedFiles { get; set; }
public int TotalResults { get; set; }
public int PageNumber { get; set; }
public int PageSize { get; set; }
}
这是我的UploadedFile
课:
public class UploadedFile
{
public int Id { get; set; }
public DateTime CreatedTime { get; set; }
public string Filename { get; set; }
public DateTime? SentTime { get; set; }
public string FileSize { get; set; }
}
我对 JSON 反序列化的理解是:
在 JSON 字符串中的值和我试图反序列化到的类对象之间,元素的大小写无关紧要。
我尝试反序列化的类可以具有比 JSON 字符串中提供的更多的属性,只要考虑到 JSON 字符串中的属性即可。
一个空的子数组,例如
UploadedFiles
数组在尝试反序列化到List<UploadedFile>
我确信这很简单,但我只是没有看到它。我在这里想念什么?