检查Json.NET是否存在属性或父属性

时间:2018-02-20 20:31:06

标签: c# .net json json.net

有没有办法检查Json.NET中是否存在属性或属性父项?

例如: 如果json看起来像这样:

{
'name': 'Sensor1',
'active': true,
'deviceId': 123,
'stats': {
    'temp': 10,
    'humidity': 50,
    'wind': 2
}

可以检查temp是否存在如下:

var data = JsonConvert.DeserializeObject<dynamic>(json);
double? temp = data["stats"]["temp"]; //returns null if temp does not exist

但是如果缺少temp(stats)的父级,则会发生异常并且不返回null。

总结一下:在给定示例的情况下,是否有可能检查temp或parent属性是否存在(或者如果stats.temp存在则简单地放入)?

我意识到我可以先检查统计数据然后检查temp,但我正在处理的json比这个例子复杂得多。

更新

我能够实现我想要的使用SelectToken(&#34; pathToProperty&#34;),如下所示:

JObject obj = JsonConvert.DeserializeObject<dynamic>(json);
JToken jt = obj.SelectToken("stats.temp");

如果找到,则SelectToken返回值,否则返回null。

0 个答案:

没有答案