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 にプロパティが存在するかどうかを確認するには、四角形を使用します。括弧構文を使用して、結果が null かどうかを確認します。プロパティが存在する場合、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) } }
トークンが null、空、または未定義のタイプの場合、このメソッドは true を返します。
以上がC# で JSON を SQL パラメーターにマッピングするときに空または Null の JToken を処理する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。