#c# #json #api #winforms
Вопрос:
пытаюсь десериализовать некоторые данные из Riot API, однако я получаю ошибки исключения. Они попадают в список вызывающих строк = JsonConvert.Десериализуетобъект<Список>((json)); моего RiotAPIForm.Cs.
using Newtonsoft.Json;
using System.net;
using System.Windows.Forms;
using System.Collections.Generic;
using System;
namespace RiotAPI_ESavage
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
WebClient client = new WebClient();
string json = client.DownloadString("https://na1.api.riotgames.com/lol/summoner/v4/summoners/by-name/Vine?api_key=KEYHERE");
JsonConvert.DeserializeObject<List<SummonerV4>>((string)apiResponse);
//MessageBox.Show(json); FOR TESTING
}
public object apiResponse { get; private set; }
private void GetAPIData_Click(object sender, EventArgs e) //Move load into into click to give windowed response.
{
WebClient client = new WebClient();
string json = client.DownloadString("https://na1.api.riotgames.com/lol/summoner/v4/summoners/by-name/Vine?api_key=KEYHERE");
List<SummonerV4> Summoners = JsonConvert.DeserializeObject<List<SummonerV4>>((json));
//var riotApi = RiotApi.NewInstance("RGAPI-b3258901-3962-4724-936d-e9b1878043dd");
//var Summoner = riotApi.SummonerV4.GetBySummonerName(Region.NA, textBox1);
//dataGridView1.DataSource = Summoners;
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
}
}
`
Это и есть призыв 4.CS, на который я ссылаюсь.
public class SummonerV4
{
public string ID { get; set; }
public string AccountID { get; set; }
public string PuuID { get; set; }
public string Name { get; set; }
public int ProfileIconId { get; set; }
public long RevisionDate { get; set; }
public long SummerLevel { get; set; }
}
Я в основном пытаюсь ввести имя пользователя, а затем вывести информацию RiotAPI в проект winforms.
Я очень новичок в программировании, поэтому очень ценю ваше терпение.
Комментарии:
1. Я получаю ошибки исключения .. можете ли вы предоставить подробную информацию и в идеале пример Json?
2. Кроме того, вы оставили свой фактический ключ API в вопросе! Если вы не можете просто изменить его, я предлагаю вам отредактировать вопрос, чтобы удалить его, и попросить модератора удалить его из истории вопросов. (Кстати, десериализация Json зависит от регистра в именах свойств)
3. Тип материала я хочу, чтобы выходные данные в поле данных будет выглядеть следующим образом { «идентификатор»: «ffVbrew02I7mPrqaSd9wsLG5Yk1ZcaNoxu6dpuqluc1-0s0», «методами accountid»: «OlnQsTk7UBWNVIclNES3xuazoF4m2XL-ab5f1umAHdActQ», «puuid»: «3SpqlqZL0JDtsCCPwJrlQO-G5SjbNzoyFGToN3EbpGreFSENaeu8zYWjtvsau1rqdoww-nMTZheBOg», «имя»: «PKultra», «profileIconId»: 4479, «revisionDate»: 1580760850000, «summonerLevel»: 106 } см developer.riotgames.com/apis#summoner-v4/GET_getBySummonerName
4. Я бы ожидал , что десериализация не вернет значения, поскольку свойства вашего класса не соответствуют свойствам Json (включая регистр!) —
SummerLevel
вместоsummonerLevel
,ProfileIconId
вместоprofileIconId
— но без того, чтобы вы сообщили нам, какие исключения вы получаете, трудно понять, в чем может быть проблема.5. Кроме того, предоставленный вами Json — это один объект, как говорится в документах, на которые вы ссылаетесь, но вы пытаетесь десериализовать его в список, что, как я подозреваю, может быть проблемой здесь.