Добрый день всем,
Я пишу программу, которая вызывает API и сопоставляет ответ json с соответствующей моделью данных.затем в конечном итоге запишет эти карты на диск.
Следующий фрагмент кода является основной точкой входа в программу.
public static async Task Main(string[] args)
{
try
{
await WriteFile(2010);
}
catch (Exception ex)
{
Console.WriteLine($"There was an exception: {ex.ToString()}");
}
}
public static async Task WriteFile(int year)
{
ApiHelper.InitializeClient();
var data = await DataLoader.LoadData(year);
StreamWriter writer = new StreamWriter(@"Data.txt");
writer.WriteLine(data.Id);
writer.Close();
}
DataLoader выглядит следующим образом:
public static async Task<BigDataModel> LoadData(int year)
{
using (HttpResponseMessage response = await ApiHelper.ApiClient.GetAsync(GetUri(year)))
{
if (response.IsSuccessStatusCode)
{
DataModel data = await response.Content.ReadAsAsync<DataModel>();
return data.Meta;
}
else
{
throw new Exception(response.ReasonPhrase);
}
}
}
В операторе if программа возвращает исключение, касающееся неправильного формата моего json и необходимости его десериализации.Я протестировал эту систему, не пытаясь отобразить и массивировать, и она работает правильно.
Мои модели данных соответствуют следующим требованиям
public class DataModel
{
public BigDataModel Meta { get; set; }
}
public class BigDataModel
{
public int Id { get; set; }
}
expected Json response
{
"projected":"value",
"actual":"value",
"meta":["data":"1","id":"data"]
}
Каковы лучшие практики при отображении объекта json (массива)к объекту.Является ли десериализация обязательной или я могу создать обходной путь для записи данных на диск.