Я пытаюсь разобрать данные из api-канала oodle.com с помощью библиотеки JSON.NET. Часть JSON-строки ответа для десериализации имеет следующую структуру «location»:
"location":{
"address":"123 foo Street",
"zip":"94102",
"citycode":"usa:ca:sanfrancisco:downtown",
"name":"San Francisco (Downtown)",
"state":"CA",
"country":"USA",
"latitude":"37.7878",
"longitude":"-122.4101"},
однако я видел экземпляры местоположения, объявленные как пустой массив:
"location":[],
Я пытаюсь десериализовать его в классе типа Location Data. Это отлично работает, когда в местоположении есть действительные данные, но не работает, когда местоположение представлено как пустой массив. Я попытался добавить атрибуты (NullValueHandling & Required), чтобы установить экземпляр местоположения как null, если данные действительно являются пустым массивом, но я думаю, что эти атрибуты предназначены только для сериализации. Если массив пуст, я получаю исключение
Cannot deserialize JSON array into type 'LocationData'
Есть ли способ сказать десериализатору не жаловаться и сделать объект местоположения нулевым, если десериализация массива не удалась? Спасибо!
[JsonProperty(NullValueHandling = NullValueHandling.Ignore,Required=Required.AllowNull)]
public LocationData location{get;set;}
...
public class LocationData
{
public string zip { get; set; }
public string address { get; set; }
public string citycode { get; set; }
public string name { get; set; }
public string state { get; set; }
public string country { get; set; }
public decimal latitude { get; set; }
public decimal longitude { get; set; }
}