检查 JObject 中是否为空或 Null JToken
问题:
在 C# 中应用程序中,以下代码尝试循环遍历 JObject 的 JArray 并将值分配给 SQL 参数使用 JTokenToSql 方法。但是,如果 JObject 中的属性为空或 null,则 JTokenToSql 方法不会按预期工作。
JArray clients = (JArray)clientsParsed["objects"]; foreach (JObject item in clients.Children()) { 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 上是否存在属性,请使用方括号语法并检查结果是否为空。如果属性存在,即使 JSON 中的值为 null,也会返回 JToken。
JToken token = jObject["param"]; if (token != null) { // the "param" property exists }
要检查 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) || (token.Type == JTokenType.Undefined) } }
如果 token 为 null、空或未定义类型,此方法将返回 true。
以上是在 C# 中将 JSON 映射到 SQL 参数时如何处理空或 Null JToken?的详细内容。更多信息请关注PHP中文网其他相关文章!