【问题标题】:Skipping Null values for an object which is a DataMember of DataContract class跳过作为 DataContract 类的 DataMember 的对象的 Null 值
【发布时间】:2015-07-29 18:53:27
【问题描述】:

我的幻灯片对象位于DataContractPresentationObject 内。幻灯片类有自己的Properties。我想跳过其中包含 null 值的所有 Properties

public class PresentationObject
{
    [DataMember(Order=0)]
    public string source { get; set; }

    [DataMember(Order = 1, EmitDefaultValue = false)]
    public string pdf { get; set; }

    [DataMember(Order = 2, EmitDefaultValue = false)]
    public List<Slides> slides { get; set; }

    [DataMember(Order = 3)]
    public bool success { get; set; }

    [DataMember(Order = 5, EmitDefaultValue = false)]
    public string error_code { get; set; }

    [DataMember(Order = 6, EmitDefaultValue = false)]
    public string error_message { get; set; }
}


public class Slides
{
        [JsonProperty(Order = -4)]
        public int slideIndex { get; set; }

        [JsonProperty(Order = -3)]
        public List<TextResponseJson> texts { get; set; }

        [JsonProperty(Order = -2)]
        public List<MediaResponseJson> images { get; set; }

        [JsonProperty(Order = -1)]
        public List<MediaResponseJson> preview_png { get; set; }
}

我已在PresentationObject 类中将EmitDefaultValue = false 设置为幻灯片DataMember,但仍保留null 属性。任何人都可以请帮助我在哪里可以跳过 slide 对象中的所有 null Properties

【问题讨论】:

  • EmitDefaultValue = false for Reference Types 没有意义,因为它们没有默认值。

标签: c# .net wcf


【解决方案1】:

使用 Newtonsoft JSON 序列化程序。微软确实如此。您可以使用single property 来实现这一点,它默认为您想要的行为。

您下一个问题的答案是here

【讨论】:

  • 一针见血。这就是我一直在寻找的。感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-12-19
  • 2012-01-23
  • 1970-01-01
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
  • 2016-02-18
相关资源
最近更新 更多