Vérification d'un JToken vide ou nul dans un JObject
Problème :
Dans un C# application, le code suivant tente de parcourir un JArray de JObjects et d'attribuer des valeurs aux paramètres SQL à l'aide de JTokenToSql méthode. Cependant, si une propriété du JObject est vide ou nulle, la méthode JTokenToSql ne fonctionne pas comme prévu.
JArray clients = (JArray)clientsParsed["objects"]; foreach (JObject item in clients.Children()) { command.Parameters["@MyParameter"].Value = JTokenToSql(item["thisParameter"]); }
JTokenToSql est défini comme :
public static object JTokenToSql(JToken obj) { if (obj.Any()) return (object)obj; else return (object)DBNull.Value; }
Solution :
Pour vérifier si une propriété existe sur un JObject, utilisez la syntaxe entre crochets et vérifiez si le résultat est nul. Si la propriété existe, un JToken sera renvoyé même si sa valeur est nulle dans le JSON.
JToken token = jObject["param"]; if (token != null) { // the "param" property exists }
Pour vérifier si un JToken n'est pas vide, pensez à utiliser une méthode d'extension comme la suivante :
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) } }
Cette méthode retournera vrai si le jeton est nul, vide ou de type indéfini.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!