【问题标题】:Cannot deserialize the current JSON - DeserializeObject - Bad model无法反序列化当前 JSON - DeserializeObject - 模型错误
【发布时间】: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


    【解决方案1】:

    JSON 中的 data 属性是 ObjectResponse 对象,但不是 ObjectResponse 数组。

    删除IEnumerable&lt;&gt;

    return JsonConvert.DeserializeObject<Response<ObjectResponse>>(result);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-06
      • 1970-01-01
      相关资源
      最近更新 更多