Ошибка десериализации Json при отображении объекта в массив в JSON - PullRequest
0 голосов
/ 26 сентября 2019

Добрый день всем,

Я пишу программу, которая вызывает 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 (массива)к объекту.Является ли десериализация обязательной или я могу создать обходной путь для записи данных на диск.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...