我正在努力通过mvc网站序列化一些对象并通过xml,json等返回内容,我正在寻找不发送空元素的最佳方法。
在一个完美的世界中,简单地将EmitDefaultValue:= False附加到DataContract中的DataMembers就足够了,但在某些情况下,它只是不会飞。
String默认为Nothing,但如果它们是Nothing或String.Empty,我不想序列化它们。列表和集合也是如此。我不希望他们序列化,如果他们什么都没有,或者他们是空的,数量为0。
似乎有一些不那么漂亮的选择。
XmlTextWriter
缓存自身并删除空元素所有这些似乎都是邪恶的,1是最不邪恶的,但却是微不足道的事情。还有其他一些技巧吗?
答案 0 :(得分:0)
答案是数据契约序列化程序并不是为了让您能够如此多地控制XML的格式。这不是它的意思。如果你需要这么多控件,那么你需要使用XML Serializer,你可能需要实现IXmlSerializable。
或者,您可以重新查看不希望序列化这些“空”对象的原因。你可能会觉得不值得花时间。