Разбор json в список объектов и отображение данных в консоли - PullRequest
1 голос
/ 02 мая 2019

Я пытаюсь получить доступ к свойствам списка объектов, которые я получил при разборе json, но я даже не уверен, что он правильно проанализировал. Это мой код:

public class Currency
{

    public int Broj_tecajnice { get; set; }
    public string Drzava { get; set; }
    public string Drzava_iso { get; set; }
    public string Sifra_valute { get; set; }
    public string Valuta { get; set; }
    public int Jedinica { get; set; }
    public float Kupovni_tecaj { get; set; }
    public float Srednji_tecaj { get; set; }
    public float Prodajni_tecaj { get; set; }
}

class Program
{
    static void Main(string[] args)
    {
        using (WebClient webClient = new System.Net.WebClient())
        {
            WebClient client = new WebClient();
            var json = 
client.DownloadString("http://api.hnb.hr/tecajn/v2");
            List<Currency> currencies = 
 JsonConvert.DeserializeObject<List<Currency>>(json);
            currencies.ForEach(c => 
Console.WriteLine(currencies.ToString()));

        }
    }
}

И вкратце, API выглядит следующим образом:

[{"broj_tecajnice":"85","datum_primjene":"2019-05-01","drzava":"EMU","drzava_iso":"EMU","sifra_valute":"978","valuta":"EUR","jedinica":1,"kupovni_tecaj":"7,388924","srednji_tecaj":"7,411157","prodajni_tecaj":"7,433390"}, {"broj_tecajnice":"85","datum_primjene":"2019-05-01","drzava":"EMU","drzava_iso":"EMU","sifra_valute":"978","valuta":"EUR","jedinica":1,"kupovni_tecaj":"7,388924","srednji_tecaj":"7,411157","prodajni_tecaj":"7,433390"}]

и т. Д., У него есть 14 объектов, и мне удается получить все 14 объектов в списке, но я не могу получить доступ к свойствам объектов

Ответы [ 2 ]

2 голосов
/ 02 мая 2019

То, что в строковый вызов выглядит некорректно. Вам необходимо создать строку, используя свойства объекта в коллекции.

Например

currencies.ForEach(c => 
    Console.WriteLine($"drzava_iso: {c.Drzava_iso}, Sifra_valute: {c.Sifra_valute}, ...")
);

Все остальное выглядит так, как должно.

0 голосов
/ 02 мая 2019

Вы должны использовать параметр c в Action функции ForEach:

Если вы переопределили ToString в вашем Currency классе:

currencies.ForEach(c => Console.WriteLine(c.ToString()));

Иначе, вы можете позвонить делегату:

currencies.ForEach(delegate(Currency c)
{
    // make your ToString() function here or any other code
    Console.WriteLine(c.Broj_tecajnice);
});

Подробнее о ForEach: https://docs.microsoft.com/fr-fr/dotnet/api/system.collections.generic.list-1.foreach?view=netframework-4.7

...