[英]Problems with deserializing Json from RIOT Api in C# UWP
我是堆棧溢出的新手,並且是一名初學者。 我想制作一個關於英雄聯盟的應用程序,但是我有一個問題。 我只是不知道如何將json反序列化為一個對象。
這就是我嘗試過的
public class LOL
{
public User user { get; set; }
}
public class User
{
public int id { get; set; }
public string name { get; set; }
public int profileIconId { get; set; }
public long revisionDate { get; set; }
public int summonerLevel { get; set; }
}
這些是我使用網站http://json2csharp.com/創建的類。
我剛剛將這些類的名稱更改為我喜歡的名稱
這是我調用API的其他課程
public class LOLFacade
{
private const string APIKey = "secret :D";
public async static Task<LOL> ConnectToRiot(string user)
{
var http = new HttpClient();
string riotURL = String.Format("https://eune.api.pvp.net/api/lol/eune/v1.4/summoner/by-name/{0}?api_key={1}", user, APIKey);
var response = await http.GetAsync(riotURL);
var result = await response.Content.ReadAsStringAsync();
return JsonConvert.DeserializeObject<LOL>(result);
}
}
這是我使用API的地方
private async void GetUserInfo_Click(object sender, RoutedEventArgs e)
{
LOL user = await LOLFacade.ConnectToRiot("gigaxel");
string name = user.user.name;
int level = user.user.summonerLevel;
InfoTextBlock.Text = name + " is level " + level;
}
當我執行代碼時,我總是會收到此錯誤:(:
你調用的對象是空的。
這是傑森:
{“ gigaxel”:{“ id”:36588106,“ name”:“ Gigaxel”,“ profileIconId”:713,“ revisionDate”:1451494377000,“ summonerLevel”:30}}
如果有人可以幫助我,我將非常感激。 我剛開始,我認為我在這段代碼中犯了很多錯誤,但是如果您能幫助我,我將非常感謝:D
嘗試以下課程而不是您的LOL
課程
public class LOL
{
public User gigaxel { get; set; }
}
您的LOL模型與您收到的JSON不匹配。
在以下問題中尋找我的答案:將JSON反序列化為對象C#
正確的模型是
public class LOL
{
public Gigaxel gigaxel { get; set; }
}
public class Gigaxel
{
public int id { get; set; }
public string name { get; set; }
public int profileIconId { get; set; }
public long revisionDate { get; set; }
public int summonerLevel { get; set; }
}
除了其他用戶指出的問題之外,您的錯誤還歸因於您試圖將JSON反序列化為從未實例化的對象的事實。 您必須在反序列化之前創建對象:
LOL LOLObj = new LOL { user = new User() };
return JsonConvert.DeserializeObject<LOLObj>(result);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.