检查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 }