有没有办法检查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。