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

C#中基于传入参数动态构建JSON并自动剔除空值属性的实现方案

解决方案

方案1:使用Newtonsoft.Json自带的null值过滤配置(最简便,仅需修改1行代码)

你无需修改原有匿名对象的构建逻辑,仅需要在序列化时添加NullValueHandling.Ignore配置即可,序列化工具会自动跳过所有值为null的属性,完全符合你的需求:

private string BuildJson (string param1, string param2, string param3)
{
    object jJson = new 
    {
        VALS= new 
        {
            val1 = param1,
            val2 = param2,
            val3 = param3
        }
    };
    // 仅需添加序列化配置即可自动过滤null属性
    return JsonConvert.SerializeObject(jJson, new JsonSerializerSettings 
    { 
        NullValueHandling = NullValueHandling.Ignore 
    });
}

这个方案完全适配你的场景:当param2为null时,输出的JSON中VALS节点下只会保留val1和val3。

方案2:使用JObject动态构建(适合后续有更复杂动态属性判断的场景)

如果你后续需要不止过滤null,还要根据其他业务规则判断是否添加属性,可以直接用JObject动态构造:

private string BuildJson (string param1, string param2, string param3)
{
    JObject valsObj = new JObject();
    if(param1 != null) valsObj["val1"] = param1;
    if(param2 != null) valsObj["val2"] = param2;
    if(param3 != null) valsObj["val3"] = param3;

    JObject jJson = new JObject
    {
        ["VALS"] = valsObj
    };
    // JObject的ToString方法默认输出格式化后的JSON,要压缩的话传Formatting.None即可
    return jJson.ToString(Formatting.None);
}

这个方案的灵活性更高,你可以在添加属性的判断逻辑里加入任意业务规则。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 18:06:07