Как получить значения из API? - PullRequest
0 голосов
/ 07 февраля 2019

Я прошу прощения за этот пост, потому что некоторым он может показаться банальным.Но я хотел бы понять работу GET API , к сожалению, почему-то я не нашел доступного учебника.Как лучший способ учиться на примерах, кто-нибудь может показать мне, как получить значения из тега name самым простым способом?может быть до textBox.

В xml:

https://bdl.stat.gov.pl/api/v1/subjects?lang=pl&format=xml

В json:

https://bdl.stat.gov.pl/api/v1/subjects?lang=pl&format=json

Код

public class Result
{
    public string id { get; set; }
    public string name { get; set; }
    public bool hasVariables { get; set; }
    public List<string> children { get; set; }
    public string levels { get; set; }
}

private void button1_Click(object sender, EventArgs e)
{
    using (WebClient wc = new WebClient())
    {
        wc.Encoding = System.Text.Encoding.UTF8;
         var json = wc.DownloadString("https://bdl.stat.gov.pl/api/v1/subjects?lang=pl&format=json");

        Result result = JsonConvert.DeserializeObject<Result>(json);

        richTextBox1.Text = result.name;
    }
}

Заранее благодарю за помощь.

1 Ответ

0 голосов
/ 07 февраля 2019

Вам не хватает различных классов для правильной десериализации строки JSON.Попробуйте как:

    public class Results
    {
        public string id { get; set; }
        public string name { get; set; }
        public bool hasVariables { get; set; }
        public List<string> children { get; set; }
        public string levels { get; set; }
    }

    public class Links
    {
        public string first { get; set; }
        public string self { get; set; }
        public string next { get; set; }
        public string last { get; set; }
    }

    public class JsonObject
    {
        public int totalRecords { get; set; }
        public int page { get; set; }
        public int pageSize { get; set; }
        public Links links { get; set; }
        public List<Results> results { get; set; }
    }

А затем используйте как:

using (WebClient wc = new WebClient())
{
   var json = wc.DownloadString("https://bdl.stat.gov.pl/api/v1/subjects?lang=pl&format=json");
  JsonObject result = JsonConvert.DeserializeObject<JsonObject>(json);
  foreach (var res in result.results)
  {
    MessageBox.Show(res.name);
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...