У меня есть API, с которого я получаю данные. Этот API не в моих силах контролировать, как он структурирован, и мне нужно сериализовать и десериализовать вывод JSON для сопоставления данных с моей моделью.Сериализация десериализации анонимных дочерних свойств JSON для модели
Все работает хорошо, где JSON красиво отформатирован с именованными свойствами.
Что вы можете делать там, где нет именованного значения, и существует только массив из целых чисел и строк? как под местах
здесь образец JSON:
{"id":"2160336","activation_date":"2013-08-01","expiration_date":"2013-08-29","title":"Practice Manager","locations":{"103":"Cambridge","107":"London"}}
У меня есть модели, которые, как:
public class ItemResults
{
public int Id { get; set; }
public DateTime Activation_Date { get; set; }
public DateTime Expiration_Date{ get; set; }
public string Title { get; set; }
public Location Locations { get; set; }
}
public class Location
{
public int Id { get; set; }
public string value { get; set; }
}
и я отображающие с помощью встроенного АЯКС сериализации:
protected T MapRawApiResponseTo<T>(string response)
{
if (string.IsNullOrEmpty(response))
{
return default(T);
}
var serialize = new JavaScriptSerializer();
return serialize.Deserialize<T>(response);
}
var results = MapRawApiResponseTo<ItemResults>(rawApiResponse);
Таким образом, идентификатор и все другие свойства являются pi склеивается и отображается, но то, что я делаю, я не могу отобразить на карте.
Большое спасибо
Не следует поле в вашем классе 'ItemResults' быть сбор и назван во множественном числе? например 'public IEnumerable Местоположение {get; задавать; } ' –
Как и многие вопросы JSON, связанные с' JavaScriptSerializer', первая часть любого ответа обычно должна быть «прекратить использование JavaScriptSerializer»; извините, но для чего-то даже отдаленно нетривиального, Json.NET делает * намного лучше работу –
Убрал мой ответ, так как формат не получился хорошо, но это полезный сайт для просмотра структуры ваших классов: http : //json2csharp.com/ – stevepkr84