У меня есть следующие ...
JArray clients = (JArray)clientsParsed["objects"];
foreach (JObject item in clients.Children())
{
// etc.. SQL params stuff...
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)obj).Count
.. Но, похоже, не работает.
ToSrting
тоJToken
и проверитьIsNullOrWhiteSpace
? (После проверки,JToken
конечно, не{}
и[]
соответственно.Вы можете выполнить следующие действия, чтобы проверить, равно ли значение JToken null.
JToken token = jObject["key"]; if(token.Type == JTokenType.Null) { // Do your logic }
источник
Еще есть тип - JTokenType.Undefined.
Эта проверка должна быть включена в ответ @Brian Rogers.
token.Type == JTokenType.Undefined
источник
Начиная с C # 7 вы также можете использовать это:
if (clientsParsed["objects"] is JArray clients) { foreach (JObject item in clients.Children()) { if (item["thisParameter"] as JToken itemToken) { command.Parameters["@MyParameter"].Value = JTokenToSql(itemToken); } } }
Оператор is проверяет тип и, если он исправляет, значение находится внутри переменной клиента.
источник
Попробуйте что-то вроде этого, чтобы преобразовать JToken в 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 }
источник