当 json 中的某个项目的值为 null 时,如何知道差异。或者如果该值根本不在 json 中。两者最终在 Entityobject 中都将为 null。 (编的)
public class Entityobject
{
public Document document { get; set; }
public int randomint { get; set; }
public string randomstr{ get; set; }
}
Entityobject entity_obj= JsonConvert.DeserializeObject<Entityobject>(json);
例如,如果 json 是:
String json = "{
randomstr = null,
randomint = 1
}"
现在文档当然也将为空。但我怎么知道其中的区别呢?需要澄清的是,我无法预先设置其他值。我实际上更喜欢一个更好的答案:只需创建另一个对象,将其作为其他初始值然后为空。另外我仍然想在 json 中发送 null。所以我也不能发送另一个值(如“删除”等)并随后将其设置为空。 所以结束这个问题:我想知道 json 中给出的 null 和因为它不包含在 json 字符串中而发生的 null 之间的区别。
希望这已经足够清楚了。预先感谢您:)
最佳答案
这不是很简单,但您可以构造对象,以便调用属性的 setter 来设置属性的另一个字段:
class Foo
{
private string _bar;
public string Bar
{
get { return _bar; }
set
{
_bar = value;
BarSpecified = true;
}
}
[JsonIgnore]
public bool BarSpecified { get; set; }
}
如果 JSON 中存在 Bar
,则 BarSpecified
将为 true,否则将为 false。
请注意,名称 BarSpecified
不是随机选择的;后缀 Specified
对于 JSON.NET(以及 XmlSerializer
)具有特殊含义:它控制属性是否被序列化。
因此,如果反序列化该对象并再次序列化它,新的 JSON 将与原始 JSON 相同(就该属性是否存在于 JSON 而言)。
关于c# - 使用 json 从字符串反序列化对象之后。您如何知道结果空值之间的差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34933758/