如何使用 JSON.NET 检查 JSON 中缺少的字段
How to check for missing field in JSON using JSON.NET
我有这个 JSON :
{
"Foo": "A value",
"Bar": 42
}
要反序列化它,我有这个 class :
public class SomeClass
{
public string Foo { get; set; }
public int Bar { get; set; }
}
我正在反序列化它:
string json1 = "{\"Foo\":\"A value\",\"Bar\":42}";
var MyObj1 = JsonConvert.DeserializeObject<SomeClass>(json1);
Debug.WriteLine("Foo1 : " + MyObj1.Foo); //Foo1 : A value
Debug.WriteLine("Bar1 : " + MyObj1.Bar); //Bar1 : 42
JSON.
中缺少某个字段时,我需要特殊处理
例如:
{
"Foo": "Another value"
}
当使用与上面相同的代码时,Bar
设置为 0。它可能在原始 JSON 中设置为 0,所以我无法用这个值判断它是否是否存在。
string json2 = "{\"Foo\":\"Another value\"}";
var MyObj2 = JsonConvert.DeserializeObject<SomeClass>(json2);
Debug.WriteLine("Foo2 : " + MyObj2.Foo); //Foo2 : Another value
Debug.WriteLine("Bar2 : " + MyObj2.Bar); //Bar2 : 0
如何实现?
最简单的选择是将其设为 int?
属性,然后检查该值是否为空:
public class SomeClass
{
public string Foo { get; set; }
public int? Bar { get; set; }
}
...
var deserialized = JsonConvert.DeserializeObject<SomeClass>(json);
if (deserialized.Bar == null)
{
// Whatever you want to do if it wasn't set
}
当然,JSON 可以显式 将该值设置为 null,但我希望您可能会很乐意处理它,就好像它丢失了一样。
我有这个 JSON :
{
"Foo": "A value",
"Bar": 42
}
要反序列化它,我有这个 class :
public class SomeClass
{
public string Foo { get; set; }
public int Bar { get; set; }
}
我正在反序列化它:
string json1 = "{\"Foo\":\"A value\",\"Bar\":42}";
var MyObj1 = JsonConvert.DeserializeObject<SomeClass>(json1);
Debug.WriteLine("Foo1 : " + MyObj1.Foo); //Foo1 : A value
Debug.WriteLine("Bar1 : " + MyObj1.Bar); //Bar1 : 42
JSON.
中缺少某个字段时,我需要特殊处理例如:
{
"Foo": "Another value"
}
当使用与上面相同的代码时,Bar
设置为 0。它可能在原始 JSON 中设置为 0,所以我无法用这个值判断它是否是否存在。
string json2 = "{\"Foo\":\"Another value\"}";
var MyObj2 = JsonConvert.DeserializeObject<SomeClass>(json2);
Debug.WriteLine("Foo2 : " + MyObj2.Foo); //Foo2 : Another value
Debug.WriteLine("Bar2 : " + MyObj2.Bar); //Bar2 : 0
如何实现?
最简单的选择是将其设为 int?
属性,然后检查该值是否为空:
public class SomeClass
{
public string Foo { get; set; }
public int? Bar { get; set; }
}
...
var deserialized = JsonConvert.DeserializeObject<SomeClass>(json);
if (deserialized.Bar == null)
{
// Whatever you want to do if it wasn't set
}
当然,JSON 可以显式 将该值设置为 null,但我希望您可能会很乐意处理它,就好像它丢失了一样。