c# sql json.net

c# - Comprobando JToken vacío/nulo en JObject



sql json.net (3)

A partir de C # 7 también podrías usar esto:

if (clientsParsed["objects"] is JArray clients) { foreach (JObject item in clients.Children()) { if (item["thisParameter"] as JToken itemToken) { command.Parameters["@MyParameter"].Value = JTokenToSql(itemToken); } } }

El Operador is es el Tipo y si se corrige, el Valor está dentro de la variable del cliente.

Tengo lo siguiente ...

JArray clients = (JArray)clientsParsed["objects"]; foreach (JObject item in clients.Children()) { // etc.. SQL params stuff... command.Parameters["@MyParameter"].Value = JTokenToSql(item["thisParameter"]); }

JTokenToSql ve así ...

public static object JTokenToSql(JToken obj) { if (obj.Any()) return (object)obj; else return (object)DBNull.Value; }

He intentado ((JObject)obj).Count también ... Pero parece que no funciona.


Para verificar si una propiedad existe en JObject , puede usar la sintaxis de corchetes cuadrados y ver si el resultado es nulo o no. Si la propiedad existe, siempre se devolverá un JToken (incluso si tiene el valor null en el JSON).

JToken token = jObject["param"]; if (token != null) { // the "param" property exists }

Si tienes un JToken en la mano y quieres ver si no está vacío, bueno, eso depende del tipo de JToken y cómo defines "vacío". Usualmente uso un método de extensión como este:

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); } }


Puede proceder de la siguiente manera para comprobar si un Valor JToken es nulo

JToken token = jObject["key"]; if(token.Type == JTokenType.Null) { // Do your logic }