Я работаю с API VK. Иногда сервер может возвращать пустой массив вместо объекта, например:Deserialize JSON, когда тип может быть другим
personal: [] //when it is empty
или
personal: {
religion: 'Нет',
smoking: 1,
alcohol: 4
} //when not empty.
I`m десериализации большинство с JsonConvert.DeserializeObject JSON, и эту часть с
JSONMainObject = ((MainObject["response"].GetObject())["user"].GetObject())["personal"].GetObject();
try
{
Convert.ToByte(MainObject["political"].GetNumber();
}
catch {}
Но он медленно работает, когда он обрабатывает множество исключений. И только сейчас я понял, что здесь есть еще несколько полей, которые могут возвращать массив при пустом. У меня просто нет идей, как сделать это быстро и ясно. Какие-либо предложения?
Мой класс десериализации (doen`t работы, когда поле пусто):
public class User
{
//some other fields...
public Personal personal { get; set; }
//some other fields...
}
public class Personal
{
public byte political { get; set; }
public string[] langs { get; set; }
public string religion { get; set; }
public string inspired_by { get; set; }
public byte people_main { get; set; }
public byte life_main { get; set; }
public byte smoking { get; set; }
public byte alcohol { get; set; }
}
Другая идея (Безразлично `работа, когда не пусто):
public List<Personal> personal { get; set; }
Попробуйте адаптировать SingleOrArrayConverter отсюда: https://stackoverflow.com/questions/18994685/how-to-handle-both-a-single-item-and-an-array-for-the-same-property-using -json-n – dbc
Спасибо за хорошую идею, это то, что я искал, надеюсь, что смогу это понять ... –