You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET(C#)如何将API响应的Results反序列化为自定义类型列表

解决方法

1. 创建API响应包装类

定义一个匹配API返回结构的类(仅需包含你需要的Results字段,其余字段会被反序列化器自动忽略):

public class SalesOrderApiResponse
{
    public List<SalesOrder> Results { get; set; }
}

2. 修改服务类的反序列化逻辑

在SalesOrderService的GetAllOrders方法中,先将API响应反序列化为包装类实例,再提取Results部分:

基于System.Text.Json的实现(.NET Core/.NET 5+ 默认)

public async Task<List<SalesOrder>> GetAllOrders()
{
    // 假设已通过HttpClient获取到API响应字符串responseContent
    var apiResponse = JsonSerializer.Deserialize<SalesOrderApiResponse>(responseContent);
    // 空值保护,避免返回null
    return apiResponse?.Results ?? new List<SalesOrder>();
}

基于Newtonsoft.Json(Json.NET)的实现

public async Task<List<SalesOrder>> GetAllOrders()
{
    // 假设responseContent是API返回的字符串
    var apiResponse = JsonConvert.DeserializeObject<SalesOrderApiResponse>(responseContent);
    return apiResponse?.Results ?? new List<SalesOrder>();
}

3. 可选:无需包装类的直接解析方案

如果不想创建额外类,可以直接解析JSON节点:

Newtonsoft.Json 方式

public async Task<List<SalesOrder>> GetAllOrders()
{
    var jObject = JObject.Parse(responseContent);
    var results = jObject["Results"].ToObject<List<SalesOrder>>();
    return results ?? new List<SalesOrder>();
}

System.Text.Json 方式

public async Task<List<SalesOrder>> GetAllOrders()
{
    using var jsonDoc = JsonDocument.Parse(responseContent);
    var resultsElement = jsonDoc.RootElement.GetProperty("Results");
    return JsonSerializer.Deserialize<List<SalesOrder>>(resultsElement);
}

内容的提问来源于stack exchange,提问作者Derek C

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 23:10:24