Как узнать, является ли JProperty объекта JObject массивом или нет? - PullRequest
0 голосов
/ 21 октября 2019

Я пытаюсь получить все свойства класса и распечатать его, включая массивы (расширенный соответствующим индексом). Если я поступлю следующим образом, я увижу, что массив появляется, он печатает имя массива.

foreach (JProperty property in localJson.Properties())
{
    Console.WriteLine("NAME :" + property.Name + "======================");
}

Но я хочу напечатать все элементы массива с их индексами, для которых я смогу определить, еслисвойство является массивом или нет. Я попытался сделать это, как показано ниже,

foreach (JProperty property in localJson.Properties())
{
    JToken propertyToken = property;
    if (propertyToken is JArray)
    {
        Console.WriteLine("Array"); //Further Manipulations
    }
    else
    {
        Console.WriteLine("NAME :" + property.Name);
    }
}

Но я все еще вижу, что propertyToken имеет тип Property и поэтому пропускает if. Есть ли другой способ сделать это?

РЕДАКТИРОВАТЬ: Мой вопрос отличается от этот вопрос , потому что мой вопрос состоит в том, чтобы проверить, является ли JProperty объекта JObject массив или нет, и если нетJToken является Jproperty или JArray.

1 Ответ

1 голос
/ 21 октября 2019

Ваш код в настоящее время спрашивает, является ли JProperty JArray. Ответ на это всегда нет. JProperty не является производным от JArray. (Оба получены из JToken.)

Что вы действительно хотите спросить, так это то, является ли значение из JProperty JArray.

JToken propertyValue = property.Value;
if (propertyValue.Type == JTokenType.Array)
{
    Console.WriteLine("Array"); //Further Manipulations
}
else
{
    Console.WriteLine("NAME :" + property.Name);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...