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

SSIS序列化美化JSON时如何排除_IsNull后缀的多余字段

解决方法

你可以通过以下两种常用方案实现过滤_IsNull后缀字段的需求:

  • 方案1:序列化阶段直接过滤(推荐)
    通过自定义Json.NET的契约解析器,在序列化执行前就排除不需要的字段,无需二次处理JSON,性能更高。
    自定义契约解析器代码:
using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;

public class IgnoreIsNullSuffixContractResolver : DefaultContractResolver
{
    protected override IList<JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization)
    {
        var allProperties = base.CreateProperties(type, memberSerialization);
        // 过滤所有名称以_IsNull结尾的属性
        return allProperties.Where(prop => !prop.PropertyName.EndsWith("_IsNull")).ToList();
    }
}

序列化调用代码:

var serializeSettings = new JsonSerializerSettings
{
    Formatting = Formatting.Indented,
    ContractResolver = new IgnoreIsNullSuffixContractResolver()
};
string json = JsonConvert.SerializeObject(Row, serializeSettings);
  • 方案2:序列化后二次处理字段
    如果已经拿到原始序列化后的JSON字符串,不想修改原有序列化逻辑,可以先解析为J对象后批量移除目标字段:
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

// 原有序列化逻辑
string rawJson = JsonConvert.SerializeObject(Row, Formatting.Indented);
// 解析为JObject
JObject jsonObj = JObject.Parse(rawJson);
// 筛选所有需要移除的_IsNull后缀字段
var needRemoveProps = jsonObj.Properties().Where(p => p.Name.EndsWith("_IsNull")).ToList();
// 批量移除
foreach (var prop in needRemoveProps)
{
    prop.Remove();
}
// 得到最终美化后的JSON
string finalJson = jsonObj.ToString(Formatting.Indented);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 05:09:01