Menyemak JToken Kosong atau Null dalam JObject
Masalah:
Dalam C# aplikasi, kod berikut cuba untuk menggelung melalui JArray JObjects dan memberikan nilai kepada parameter SQL menggunakan kaedah JTokenToSql. Walau bagaimanapun, jika harta dalam JObject kosong atau batal, kaedah JTokenToSql tidak berfungsi seperti yang diharapkan.
JArray clients = (JArray)clientsParsed["objects"]; foreach (JObject item in clients.Children()) { command.Parameters["@MyParameter"].Value = JTokenToSql(item["thisParameter"]); }
JTokenToSql ditakrifkan sebagai:
public static object JTokenToSql(JToken obj) { if (obj.Any()) return (object)obj; else return (object)DBNull.Value; }
Penyelesaian:
Untuk menyemak sama ada sifat wujud pada JObject, gunakan kurungan segi empat sama sintaks dan semak sama ada hasilnya adalah batal. Jika harta itu wujud, JToken akan dikembalikan walaupun nilainya batal dalam JSON.
JToken token = jObject["param"]; if (token != null) { // the "param" property exists }
Untuk menyemak sama ada JToken tidak kosong, pertimbangkan untuk menggunakan kaedah sambungan seperti berikut:
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) } }
Kaedah ini akan kembali benar jika token adalah batal, kosong atau daripada jenis yang tidak ditentukan.
Atas ialah kandungan terperinci Bagaimana Mengendalikan JToken Kosong atau Null Apabila Memetakan JSON ke Parameter SQL dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!