Как мне узнать, имеют ли записи JArray тип string или тип float (или что-то еще)?

#c# #json.net

#c# #json.net

Вопрос:

У меня есть документ json, который выглядит следующим образом:

 {
 "default": ["auto", 1.0]
}
  

где любая из записей массива может быть (предопределенной) string или float значением. Я предполагал, что использование (float?) приведения вернет null в тех случаях, когда это было string , но, видимо, я ошибаюсь. Итак, каков правильный способ сделать это?

Просто для ясности, это завершается ошибкой с сообщением об ошибке:

 float? x = (float?)property.Value[0];
  

Необработанное исключение типа
‘Система.Исключение ArgumentException’ произошло в
Newtonsoft.Json.dll

Дополнительная информация: Не удается преобразовать строку в Single.

Конечно, я всегда мог бы просто перехватить это исключение, но я не думаю, что это предполагаемое решение.

Комментарии:

1. Вы можете попробовать использовать Single.Parse() или Single.TryParse()

Ответ №1:

Что ж, подумав еще пару минут, я пришел к этому очевидному решению:

 if (property.Value[0].Type == JTokenType.Float)
{
    x = (float)property.Value[0];