Red*_*gle 4 asp.net json datamember
我有一个可以接受一个字符串的.Net Web服务功能.
然后该函数将该字符串序列化为JSON,但我只想序列化它,如果它的值不是"".
我找到了这些说明:
http://msdn.microsoft.com/en-us/library/aa347792.aspx
[DataContract]
public class MyClass
{
[DataMember (EmitDefaultValue=false)]
public string myValue = ""
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,我无法隐藏序列化中的myValue,因为""不是字符串的.Net默认值(这有多么愚蠢!)
两种选择之一
在Web服务上有某种属性,将""设置为null
在课堂上有一些条件
我更喜欢第一,因为它使代码更清晰,但意见会很好.
谢谢
您可以使用类显式设置默认值(用于序列化) DefaultValueAttribute:
[DataContract]
public class MyClass
{
[DataMember (EmitDefaultValue=false)]
[DefaultValue("")]
public string myValue = ""
}
Run Code Online (Sandbox Code Playgroud)
我认为你在这里至少有几个选择。这是额外的工作,但值得。
您可以将字符串封装在引用类型中。由于引用类型如果不存在则为 null,因此您可以立即知道字符串是否存在(因为无论字符串是否为非空,封装引用类型都将为非 null 或 null。)
最后一个选择是添加一个在 OnDeserializing/OnDeserialized/OnSerializing/OnSerialized 上设置的额外补充变量(可能是布尔值),并使用它来跟踪线路上是否实际存在某些内容。例如,您可以仅在实际序列化非空字符串时将此互补变量设置为 true ,类似地
| 归档时间: |
|
| 查看次数: |
3379 次 |
| 最近记录: |