Newtsonsoft - 一个埋藏在JSON中的财产

时间:2016-09-19 18:07:13

标签: c# json json.net

在解析JSON字符串时,我想测试一个属性是否存在,以便应用程序不会抛出一个" null引用"如果JSON属性没有进入字符串,则会出错。

我正在寻找的财产被埋没在JSON

dateofbirth = (string) o["Person"]["Demographics"]["Birthdate"]["Date"];

当我尝试访问该属性时

var JSONBirthDate = o.Property("Birthdate");

它总是返回" null" - 我已经搜索过,无法找到在JSON层次结构中抓取属性的语法。

一旦我能做到这一点,我猜我只是这样检查:

if(property != null) {
    // do something
}

并提供默认值。

1 个答案:

答案 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