检查JObject中的空/空JToken

我有以下…

JArray clients = (JArray)clientsParsed["objects"]; foreach (JObject item in clients.Children()) { // etc.. SQL params stuff... command.Parameters["@MyParameter"].Value = JTokenToSql(item["thisParameter"]); } 

JTokenToSql看起来像这样…

 public static object JTokenToSql(JToken obj) { if (obj.Any()) return (object)obj; else return (object)DBNull.Value; } 

我试过((JObject)obj).Count也..但似乎没有工作。

要检查某个JObject上是否存在属性,可以使用方括号语法,并查看结果是否为空。 如果该属性存在,一个JToken将总是被返回(即使JSON中的值为null )。

 JToken token = jObject["param"]; if (token != null) { // the "param" property exists } 

如果你手中有一个JToken ,而且你想看看它是否是非空的,那么这取决于它是什么types的JToken ,以及如何定义“空”。 我通常使用这样的扩展方法:

 public static class JsonExtensions { public static bool IsNullOrEmpty(this JToken token) { return (token == null) || (token.Type == JTokenType.Array && !token.HasValues) || (token.Type == JTokenType.Object && !token.HasValues) || (token.Type == JTokenType.String && token.ToString() == String.Empty) || (token.Type == JTokenType.Null); } } 

您可以按照以下步骤检查JToken值是否为空

 JToken token = jObject["key"]; if(token.Type == JTokenType.Null) { // Do your logic }