【发布时间】:2022-07-12 15:41:55
【问题描述】:
我尝试从 api 下载数据,但出现错误:DeserializeObject
我想我有一个糟糕的模型:ObjectResponse
但我想不出还有什么方法可以构建它
我使用 Newtonsoft.Json
控制器
private async Task<Response<IEnumerable<ObjectResponse>>> GetItemsAsync(string uri)
{
var result = await _client.GetStringAsync(uri);
return JsonConvert.DeserializeObject<Response<IEnumerable<ObjectResponse>>>(result);
}
结果我有:
"{"success":true,"data":{"leasingItems":[],"suspectedItems":[]}}"
型号
public class Response<T>
{
public bool Success { get; set; }
public T Data { get; set; }
public IEnumerable<Error> Errors { get; set; }
}
public class ObjectResponse
{
public string[]? leasingItems { get; set; }
public string[]? suspectedItems { get; set; }
}
错误:
发生了一个或多个错误。 (无法将当前 JSON 对象(例如 {"name":"value"})反序列化为类型 'System.Collections.Generic.IEnumerable`1[Swip.Core.DTO.SwipSearchSuspect]' 因为该类型需要 JSON 数组(例如[1,2,3]) 正确反序列化。 要修复此错误,要么将 JSON 更改为 JSON 数组(例如 [1,2,3]),要么将反序列化类型更改为普通的 .NET 类型(例如,不是像整数这样的原始类型,而不是像这样的集合类型可以从 JSON 对象反序列化的数组或列表。 JsonObjectAttribute 也可以添加到类型中以强制它从 JSON 对象反序列化。 路径“data.leasingItems”,第 1 行,位置 39。)
内部异常 1: JsonSerializationException:无法将当前 JSON 对象(例如 {"name":"value"})反序列化为类型“System.Collections.Generic.IEnumerable`1[Swip.Core.DTO.SwipSearchSuspect]”,因为该类型需要 JSON 数组(例如 [1,2,3]) 以正确反序列化。 要修复此错误,要么将 JSON 更改为 JSON 数组(例如 [1,2,3]),要么将反序列化类型更改为普通的 .NET 类型(例如,不是像整数这样的原始类型,而不是像这样的集合类型可以从 JSON 对象反序列化的数组或列表。 JsonObjectAttribute 也可以添加到类型中以强制它从 JSON 对象反序列化。 路径“data.leasingItems”,第 1 行,位置 39。
【问题讨论】:
标签: c# arrays json .net ienumerable