Heim >Datenbank >MySQL-Tutorial >Wie gehe ich mit leeren oder Null-JTokens um, wenn ich JSON SQL-Parametern in C# zuordne?
Prüfung auf leeres oder Null-JToken in einem JObject
Problem:
In einem C# Anwendung versucht der folgende Code, ein JArray von JObjects zu durchlaufen und SQL-Parametern mithilfe der JTokenToSql-Methode Werte zuzuweisen. Wenn jedoch eine Eigenschaft im JObject leer oder null ist, funktioniert die JTokenToSql-Methode nicht wie erwartet.
JArray clients = (JArray)clientsParsed["objects"]; foreach (JObject item in clients.Children()) { command.Parameters["@MyParameter"].Value = JTokenToSql(item["thisParameter"]); }
JTokenToSql ist definiert als:
public static object JTokenToSql(JToken obj) { if (obj.Any()) return (object)obj; else return (object)DBNull.Value; }
Lösung:
Um zu überprüfen, ob eine Eigenschaft auf einem JObject vorhanden ist, verwenden Sie die Syntax in eckigen Klammern und prüfen Sie, ob die Ergebnis ist null. Wenn die Eigenschaft vorhanden ist, wird ein JToken zurückgegeben, auch wenn sein Wert im JSON null ist.
JToken token = jObject["param"]; if (token != null) { // the "param" property exists }
Um zu überprüfen, ob ein JToken nicht leer ist, sollten Sie eine Erweiterungsmethode wie die folgende in Betracht ziehen:
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) } }
Diese Methode gibt true zurück, wenn das Token null, leer oder vom undefinierten Typ ist.
Das obige ist der detaillierte Inhalt vonWie gehe ich mit leeren oder Null-JTokens um, wenn ich JSON SQL-Parametern in C# zuordne?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!