Пишу программу с VK Api, делал GET запрос, далее возникли проблемы с парсингом json. Когда запускаю программу ничего не отображается... Вот код:
public class Account
{
public string id { get; set; }
public string first_name { get; set; }
public string last_name { get; set; }
public string bdate { get; set; }
}
private void Example_Load(object sender, EventArgs e)
{
var client = new WebClient();
using (var stream = client.OpenRead("https://api.vk.com/method/users.get?user_ids=210700286&fields=bdate&v=5.64"))
using (var sr = new StreamReader(stream))
{
var text = sr.ReadToEnd();
Account m = JsonConvert.DeserializeObject<Account>(text);
textBox1.Text = m.id;
textBox1.Text += " ";
textBox1.Text += m.first_name;
textBox1.Text += " ";
textBox1.Text += m.last_name;
textBox1.Text += " ";
textBox1.Text += m.bdate;
}
}
В чём проблема? За ранее огромное спасибо
Ваш запрос возвращает следующий JSON:
{"response":[{"id":210700286,"first_name":"Lindsey","last_name":"Stirling","bdate":"21.9.1986"}]}
Он не совпадает с вашим классом Account
.
Если скопировать его в буфер обмена и выполнить в Visual Studio команду меню Edit > Paste Special > Paste JSON As Classes, то будут сгенерированы следующие классы:
public class Rootobject
{
public Response[] response { get; set; }
}
public class Response
{
public int id { get; set; }
public string first_name { get; set; }
public string last_name { get; set; }
public string bdate { get; set; }
}
Становится понятно, что возвращается объект, содержащий массив данных о пользователях.
Следующий код должен работать:
var root = JsonConvert.DeserializeObject<Rootobject>(text);
foreach (var response in root.response)
Console.WriteLine(response.id + " " + response.first_name +
" " + response.last_name + " " + response.bdate);
Желательно названия классов и свойств привести к общепринятым в C# стандартам и сделать их более осмысленными:
[JsonObject("Rootobject")]
public class Response
{
[JsonProperty("response")]
public Account[] Accounts { get; set; }
}
[JsonObject("Response")]
public class Account
{
[JsonProperty("id")]
public int Id { get; set; }
[JsonProperty("first_name")]
public string FirstName { get; set; }
[JsonProperty("last_name")]
public string LastName { get; set; }
[JsonProperty("bdate")]
public string BirthDate { get; set; }
}
var response = JsonConvert.DeserializeObject<Response>(text);
foreach (var account in response.Accounts)
Console.WriteLine(account.Id + " " + account.FirstName +
" " + account.LastName + " " + account.BirthDate);
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Сортирует значения какого-нибудь List в случайном порядкеА как сделать так, чтобы List2 отсортировался в точно таком же порядке?
Подскажите где найти тему интерфейса в стиле Steam для WindowsForms, обрыл весь интернет, но не нашел ничего годного
Есть датагрид к которому нужно биндить коллекцию из класса вью модели которая сама является составной из нескольких однотипных коллекций...