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 Se ve como esto...
public static object JTokenToSql(JToken obj)
{
if (obj.Any())
return (object)obj;
else
return (object)DBNull.Value;
}
También lo he intentado ((JObject)obj).Count... Pero parece que no funciona.

ToSrtingelJTokeny comprobarIsNullOrWhiteSpace? (Después de comprobarJTokenque no es nulo, por supuesto){}y[]respectivamente.Puede proceder de la siguiente manera para verificar si un valor JToken es nulo
JToken token = jObject["key"]; if(token.Type == JTokenType.Null) { // Do your logic }fuente
También hay un tipo: JTokenType.Undefined.
Esta verificación debe incluirse en la respuesta de @Brian Rogers.
token.Type == JTokenType.Undefinedfuente
A partir de C # 7, también puede 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 comprueba el tipo y, si lo corrige, el valor está dentro de la variable clientes.
fuente
Pruebe algo como esto para convertir JToken a JArray:
static public JArray convertToJArray(JToken obj) { // if ((obj).Type == JTokenType.Null) --> You can check if it's null here if ((obj).Type == JTokenType.Array) return (JArray)(obj); else return new JArray(); // this will return an empty JArray }fuente