我正在努力通过 mvc 站点序列化一些对象并通过 xml、json 等返回内容,我正在寻找不发送空元素的最佳方法。
在一个完美的世界中,只需将 EmitDefaultValue:=False 附加到 DataContract 中的 DataMembers 就足够了,但在某些情况下,它就是行不通。
String 默认值为 Nothing,但如果它们是 Nothing 或 String.Empty,我不想序列化它们。列表和集合也是如此。我不希望他们序列化,如果他们什么都不是,或者他们是空的,计数为 0。
似乎有一些不那么漂亮的选择。
- 自定义
XmlTextWriter
缓冲并丢弃空元素 - 在对象被序列化之前,循环遍历 prop,将 Empty 设置为 Nothing,将 Count-0 设置为 Nothing
- 删除空元素的 XSLT
- 正则表达式输出字符串的输出
所有这些似乎都有些邪恶,1 是最不邪恶的,但要做的事情微不足道。有没有其他的技巧呢?