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

UWP C#使用System.Net.Http发送原生JSON列表的实现方案

C# 10 + .NET 5 环境下直接发送JSON列表POST请求的方案

核心实现思路

直接使用System.Net.Http.Json库提供的原生扩展方法,无需手动将列表对象序列化为JSON字符串,方法底层会自动完成序列化、设置请求头的操作。

前置准备

  • 项目需引用System.Net.Http.Json包,.NET 5 版本可直接安装对应5.0.0版本的NuGet包,也可在项目文件中添加如下引用:
    <PackageReference Include="System.Net.Http.Json" Version="5.0.0" />
    

完整代码示例

1. 定义业务数据模型(示例)

// 可替换为你实际的业务类结构
public class GoodsItem
{
    public int GoodsId { get; set; }
    public string GoodsName { get; set; }
    public decimal Price { get; set; }
    public int Stock { get; set; }
}

2. 发送POST请求代码

using System.Net.Http;
using System.Net.Http.Json; // 必须引入该命名空间才能使用扩展方法
using System.Text.Json;

// 注意:生产环境建议通过IHttpClientFactory获取HttpClient实例,避免每次new导致套接字资源耗尽
var httpClient = new HttpClient
{
    BaseAddress = new Uri("https://你的目标接口域名/")
};

// 直接构造原生List对象,无需手动转JSON字符串
var postList = new List<GoodsItem>
{
    new GoodsItem { GoodsId = 1, GoodsName = "鲜牛奶", Price = 12.9m, Stock = 100 },
    new GoodsItem { GoodsId = 2, GoodsName = "全麦面包", Price = 8.9m, Stock = 50 }
};

try
{
    // 直接调用PostAsJsonAsync方法,传入接口路径、列表对象即可完成JSON列表的发送
    HttpResponseMessage response = await httpClient.PostAsJsonAsync("api/goods/batch-add", postList);
    
    // 校验请求是否成功
    response.EnsureSuccessStatusCode();
    
    // 可选:读取接口返回的JSON结果
    var responseResult = await response.Content.ReadFromJsonAsync<YourResponseType>();
}
catch (HttpRequestException e)
{
    // 自定义处理请求异常
    Console.WriteLine($"请求失败:{e.Message}");
}

自定义序列化配置

如果需要调整JSON序列化规则,比如使用驼峰命名、忽略空值等,可传入JsonSerializerOptions参数:

var serializeOptions = new JsonSerializerOptions
{
    // 序列化属性为驼峰命名
    PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
    // 忽略值为null的属性
    IgnoreNullValues = true,
    // 不格式化JSON(减少请求体积)
    WriteIndented = false
};

// 传入配置参数发送请求
var response = await httpClient.PostAsJsonAsync("api/goods/batch-add", postList, serializeOptions);

额外说明

  • PostAsJsonAsync方法会自动添加Content-Type: application/json请求头,无需手动设置
  • 发送的列表对象没有类型限制,所有可序列化的泛型集合都可以直接传入

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 23:27:04