XML和JSON结果显示了WEB API中公共类的不同结果

时间:2015-09-04 11:29:48

标签: c# json xml asp.net-web-api xml-serialization

在我的WEB API中,我得到了XML和Json的结果。它工作正常。但是,当我从DB收集数据时,一些记录是空的。在转换为xml或json时,结果是不同的。 输出的公共类是。

public  class items
{
    [JsonProperty(PropertyName = "frequency")]
    [XmlElement(ElementName = "frequency")]
    public string Frequency { get; set; }
    [JsonProperty(PropertyName = "modulation")]
    [XmlElement(ElementName = "modulation")]
    public string Modulation { get; set; }
}

转换按

进行
var Station = new items
{
    Frequency = (mContent["frequency"] is DBNull) ? null : mContent["frequency"].ToString(),
    Modulation = (mContent["modulation"] is DBNull) ? null : mContent["modulation"].ToString(),
}

对于Json Result我得到了我真正想要的东西:

[{"items":[{"frequency":null,"modulation":null}]}]

XML显示

<items>
  <item/>
</items>

但我想要

 <items>
  <item>
    <frequency/>
    <modulation/>
 </item>
</items>

怎么能这样呢?

1 个答案:

答案 0 :(得分:1)

我想您可能想要使用XmlElementAttribute.IsNullable属性:

public  class items
{
    [JsonProperty(PropertyName = "frequency")]
    [XmlElement(ElementName = "frequency", IsNullable = true)]
    public string Frequency { get; set; }
    [JsonProperty(PropertyName = "modulation")]
    [XmlElement(ElementName = "modulation", IsNullable = true)]
    public string Modulation { get; set; }
}

然后你应该得到:

<items>
  <item>
    <frequency xsi:nil = "true" />
    <modulation xsi:nil = "true" />
 </item>
</items>