【问题标题】:Conditional Property Serialization Json.net [duplicate]条件属性序列化 Json.net [重复]
【发布时间】:2015-12-31 02:00:15
【问题描述】:

如果有一种优雅的方法可以避免使用 Json.net 序列化空值属性,我会徘徊。这个link 展示了两种进行条件序列化的方法,但它们都不是我想要的。第一种方法接近我想要的但并不令人满意。例如,您应该为每个属性创建一个方法 (ShouldSerialize + 'property-name'())。这不是一个优雅的解决方案,因为所有方法都必须是公开的并且可见。因此,如果您有 20 个属性,这意味着您应该有 20 个方法,还是有更好的方法? 最好的解决方案是使用一种方法,比如 OnSerialize(object property, object value);当对象的属性即将被序列化时调用。请帮忙...

【问题讨论】:

    标签: c# json serialization json.net


    【解决方案1】:

    查看Null Value Handling中显示的示例

    此示例将对象序列化为 JSON,并将 NullValueHandling 设置为 Ignore,以便 JSON 结果中不包含具有默认值的属性。

    string jsonIgnoreNullValues = JsonConvert.SerializeObject(person, Formatting.Indented, new JsonSerializerSettings
    {
        NullValueHandling = NullValueHandling.Ignore
    });
    

    【讨论】:

    • 感谢您的回复。这足以处理空值属性。我对这个实现的唯一问题是它返回字符串而不是 json 对象。我可以使用 JObject.Parse() 方法获取 json 对象。很好的帮助!
    最近更新 更多