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

如何在API的POST请求JSON体中正确传递null值?

解决C#生成含null值的合规JSON请求体问题

核心建议:放弃手动拼接JSON字符串

手动拼接极易出现格式错误(比如把null误写为空字符串""、字段语法不规范),直接用JSON序列化库是最可靠的方案,还能保证所有必填字段都被保留。

方法1:使用Newtonsoft.Json(Json.NET)

  1. 定义与API请求体结构完全匹配的实体类:
public class ApiRequestBody
{
    // 示例必填字段,根据实际API结构调整
    public string Username { get; set; }
    public int UserLevel { get; set; }
    // 需要设为null的字段,用可空类型声明(C# 8+支持可空引用类型)
    public string? Exp { get; set; }
    public int? TeamID { get; set; }
}
  1. 实例化对象并设置null值,再序列化:
var requestData = new ApiRequestBody
{
    Username = "test_user",
    UserLevel = 2,
    Exp = null,
    TeamID = null
};

// 序列化生成标准JSON,默认会保留所有字段(包括null值)
string validJson = Newtonsoft.Json.JsonConvert.SerializeObject(requestData);

生成的合规JSON示例:

{"Username":"test_user","UserLevel":2,"Exp":null,"TeamID":null}

方法2:使用System.Text.Json(.NET Core 3.0+内置)

  1. 同样定义匹配的实体类:
public class ApiRequestBody
{
    public string Username { get; set; }
    public int UserLevel { get; set; }
    public string? Exp { get; set; }
    public int? TeamID { get; set; }
}
  1. 序列化(默认保留所有null字段,无需额外配置):
var requestData = new ApiRequestBody
{
    Username = "test_user",
    UserLevel = 2,
    Exp = null,
    TeamID = null
};

string validJson = System.Text.Json.JsonSerializer.Serialize(requestData);

特殊场景:必须手动拼接(不推荐)

如果确实需要手动拼接,严格遵循JSON语法:

  • null值不能加引号,直接写"Exp":null
  • 所有字段必须完整保留
    正确拼接示例:
string validJson = @"{""Username"":""test_user"",""UserLevel"":2,""Exp"":null,""TeamID"":null}";

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 13:17:44