将json解析为对象列表并在控制台中显示数据

时间:2019-05-02 15:20:54

标签: c# json webclient

我正在尝试访问从解析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 个答案:

答案 0 :(得分:2)

该字符串调用看起来不正确。您需要使用集合中对象的属性构造一个字符串。

例如

user_input = input("Expense Amount: ")

其他所有内容都应有的样子。

答案 1 :(得分:0)

您必须在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);
});

进一步了解ForEachhttps://docs.microsoft.com/fr-fr/dotnet/api/system.collections.generic.list-1.foreach?view=netframework-4.7