c# - 使用 HttpContent.ReadAsAsync<T> 解析带有一个对象或数组的响应

标签 c# json .net-core

我正在集成一个从几乎端点返回此模型的 API

{
  meta: { ... },
  data: { ... }
}

但对于某些调用,数据是同类对象的数组

{
  meta: { ... },
  data: [
    { ... },
    { ... }
  ]
}

我想使用 HttpContent.ReadAsAsync<ResponseObj>将这两个转换为我的 C# 类,我已经像这样设置了 Response 类:

public class ResponseObj {
  public MetaObj Meta {get;set;}
  public DataObj[] Data {get;set;}
}

有点出乎意料,我在尝试解析第一个响应时遇到异常。是否可以告诉 JSON 解析器处理单个数据对象并返回单个元素数组?

我能看到的唯一其他解决方案是创建单独的 ResponseObj两种不同响应类型的定义。

最佳答案

将您的 ResponseObj 创建为通用类。

public class ResponseObj<T> {
  public MetaObj Meta {get;set;}
  public T Data {get;set;}
}

您可以使用 HttpContent.ReadAsAsync<ResponseObj<DataObj>> 反序列化 json或 HttpContent.ReadAsAsync<ResponseObj<DataObj[]>>

关于c# - 使用 HttpContent.ReadAsAsync<T> 解析带有一个对象或数组的响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67281084/

相关文章:

c# - 在 F# 中是否有 C# 的 nameof(..) 等价物?

c# - 确定 ForEachAsync 并行度的因素

java - Android - If 语句被忽略并绕过

c# - 将 Entity Framework Core 迁移用于类库项目

c# - 使用 asp.net web.api json 不工作

c# - 是否可以跨 Web 角色实例共享应用程序对象?

javascript - JSON 结果格式与 JS

json - JSON 文件中的 "NA"转换为 NA 逻辑

.net-core - 与此项目不兼容的包类型 DotnetPlatform

c# - System.Reflection.AmbiguousMatchException : 'Ambiguous match found.'