на словарь - вылетает ошибка, оно то и понятно, но как фиксить?
Может ты это... Ошибку там кинешь, код?
Cannot deserialize the current JSON array (e.g. [1,2,3]) into type 'System.Collections.Generic.IDictionary
А пустой это как? {}? Нужно проверить хотя бы, что если нет объектов внутри, то выдавать Default
JsonConvert.DeserializeObject<IDictionary<string, string>>("{}");
Только проверкой. Сам он создавать default не умеет.
А почему бы просто в try catch не обернуть, если ты не знаешь, придет тебе dictionary или нет
и что и как проверять? строку регулярками? или что?
потому что это нормлаьная ситуация а не исключительная .... у модели может быть оно пустое
С точки зрения jsonconvert она исключительная Ты нормализуешь её у себя, делая catch
Можно просто на длину строки > 0 для начала. Но в итоге там же можно быть и не тот объект вообще.. Поэтому вывести десериализацию в метод, который будет либо Bool либо nullable. Возвращать.
данные могут придти битыми и я тогда не узнаю, пришли битые данные или нормальные, а он тупо распарсить не может
там приходит огромный массив данных, у модели этот параметр может быть а может и не быть, и когда он есть все нормально, если он пустой приходит, то ошибка
Ну напиши так bool TryParse<T>(string input, out T result){ try{ result = JsonConver.Deserialize<T>(input); return true; } catch{ return false; } }
Пишет же что там массив
public class MyModel { public IDictionary<string, string> Field1 { get; set; } public IDictionary<string, string> Field2 { get; set; } } JsonConvert.DeserializeObject<MyModel>("{ 'fileld1': {}, 'field2' {'key':'value', 'key':'value'}}");
Ну тут у Вас json битый же
Ну совсем маленько же :)
Действительно, newtonsoft мог бы и починить)
я ему написал)
Ну нормально Дали кривой код, а потом говорите, что это для примера Покажите код и ошибку, что ли, только, уточняю, реальные
Обсуждают сегодня