在解析JSON字符串时,我想测试一个属性是否存在,以便应用程序不会抛出一个" null引用"如果JSON属性没有进入字符串,则会出错。
我正在寻找的财产被埋没在JSON
中dateofbirth = (string) o["Person"]["Demographics"]["Birthdate"]["Date"];
当我尝试访问该属性时
var JSONBirthDate = o.Property("Birthdate");
它总是返回" null" - 我已经搜索过,无法找到在JSON层次结构中抓取属性的语法。
一旦我能做到这一点,我猜我只是这样检查:
if(property != null) {
// do something
}
并提供默认值。
答案 0 :(得分:1)
您可以将SelectToken
用于此目的:
var dateofbirth = (string)o.SelectToken("Person.Demographics.Birthdate.Date");
它支持数组索引以及属性选择。例如,如果你有一群人而不是一个人,你可以这样做:
var dateofbirth = (string)o.SelectToken("People[0].Demographics.Birthdate.Date");
它还支持JSONPath query syntax,包括通配符和递归下降运算符。有关完整语法,请参阅here。