使用 HttpContent.ReadAsAsync<T> 解析带有一个对象或数组的响应
Posted
技术标签:
【中文标题】使用 HttpContent.ReadAsAsync<T> 解析带有一个对象或数组的响应【英文标题】:Using HttpContent.ReadAsAsync<T> to parse responses with one object or an array 【发布时间】:2021-07-20 16:18:56 【问题描述】:我正在集成到从几乎端点返回此模型的 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
定义。
【问题讨论】:
【参考方案1】:将您的 ResponseObj 创建为通用类。
public class ResponseObj<T>
public MetaObj Meta get;set;
public T Data get;set;
您可以使用HttpContent.ReadAsAsync<ResponseObj<DataObj>>
或HttpContent.ReadAsAsync<ResponseObj<DataObj[]>>
反序列化json
【讨论】:
以上是关于使用 HttpContent.ReadAsAsync<T> 解析带有一个对象或数组的响应的主要内容,如果未能解决你的问题,请参考以下文章
在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?
Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)