如何判断json的节点是否存在
问题描述:
我正在使用Newtonsoft.Json将json字符串反序列化为Object,但我无法判断节点是否为null
。例如。 jo["data"]["prevtime"]
,有时json
有节点["prevtime"]
,有时没有["prevtime"]
。如果["prevtime"]
为null
,则会报告错误。如何判断json的节点是否存在
var jo = JObject.Parse(content);
if (jo["data"].ToString() == "")
return new StatusCollection();
var jInfo = jo["data"]["info"];
StatusCollection list = new StatusCollection();
Status status = null;
if (jInfo != null)
{
foreach (var j in jInfo.Children())
{
if (jo["data"]["prevtime"] != null)
{
status.Nexttime = jo["data"]["nexttime"].ToString();
status.Prevtime = jo["data"]["prevtime"].ToString();
}
status = j.ToObject<Status>();
if (!string.IsNullOrEmpty(status.Head))
{
status.Head += "/50";
}
if (!string.IsNullOrEmpty(status.From))
{
status.From = "来自" + status.From;
}
list.Add(status);
}
}
答
在当前版本,它会像:
if (jo["data"].Select***Token***("prevtime") != null)
{
status.Prevtime = jo["data"].Value<string>("prevtime");
status.Nexttime = jo["data"].Value<string>("nexttime");
}
这条线将报告错误[IF(!祚[ “数据”] [ “prevtime”] = NULL)]如果没有[ “prevtime” 在乔[”数据”]。 – 2012-01-09 14:02:27