首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法反序列化当前的JSON - DeserializeObject -不好的模型

无法反序列化当前的JSON - DeserializeObject -不好的模型
EN

Stack Overflow用户
提问于 2022-07-12 07:38:15
回答 1查看 87关注 0票数 0

我尝试从API下载数据,但是当DeserializeObject时出现了一个错误。

我想我有一个糟糕的模型:ObjectResponse

但我想不出怎么建造它

我使用Newtonsoft.Json

控制器

代码语言:javascript
复制
private async Task<Response<IEnumerable<ObjectResponse>>> GetItemsAsync(string uri)
{
    var result = await _client.GetStringAsync(uri);

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

因此,我有:

“{”成功“:真,”数据“:{”leasingItems“:[],”suspectedItems:[]}“

模型

代码语言:javascript
复制
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对象(例如,{“名称”:“值”})反序列化为'System.Collections.Generic.IEnumerable`1Swip.Core.DTO.SwipSearchSuspect‘类型,因为该类型需要一个JSON数组(例如,1,2,3)才能正确反序列化。要修复此错误,要么将JSON更改为JSON数组(例如,1,2,3),要么更改反序列化类型,使之成为可以从JSON对象反序列化的普通.NET类型(例如,不像整数这样的原始类型,而不是数组或列表之类的集合类型)。还可以将JsonObjectAttribute添加到类型中,以强制它从JSON对象反序列化。路径'data.leasingItems',第1行,位置39.)内部异常1: JsonSerializationException:无法将当前JSON对象(例如,{“名称”:“值”})反序列化为类型JsonSerializationException,因为该类型需要一个JSON数组(例如,1,2,3)才能正确反序列化。要修复此错误,要么将JSON更改为JSON数组(例如,1,2,3),要么更改反序列化类型,使之成为可以从JSON对象反序列化的普通.NET类型(例如,不像整数这样的原始类型,而不是数组或列表之类的集合类型)。还可以将JsonObjectAttribute添加到类型中,以强制它从JSON对象反序列化。路径'data.leasingItems',第1行,位置39.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-12 07:41:55

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

删除IEnumerable<>

代码语言:javascript
复制
return JsonConvert.DeserializeObject<Response<ObjectResponse>>(result);

并应用JsonProperty属性。

代码语言:javascript
复制
public class Response<T>
{
  [JsonProperty("success")]
  public bool Success { get; set; }
  [JsonProperty("data")]
  public T Data { get; set; }
  public IEnumerable<Error> Errors { get; set; }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72948649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档