【发布时间】:2016-12-10 18:33:35
【问题描述】:
我正在尝试使用 Xamarin 和 Riot Games API 制作一个简单的应用程序。我无法访问召唤师信息。由于我认为我的反序列化方式,它只适用于我的用户名。
这是我的代码:
public async void GetSummonerInformation()
{
using (var client = new HttpClient())
{
var result = await client.GetStringAsync(url);
var res = JsonConvert.DeserializeObject<RootObject>(result);
sumName = res.psychoal3x.name;
}
}
public class Psychoal3x
{
public int id { get; set; }
public string name { get; set; }
public int profileIconId { get; set; }
public int summonerLevel { get; set; }
public long revisionDate { get; set; }
}
public class RootObject
{
public Psychoal3x psychoal3x { get; set; }
}
问题是,如果我将用户名更改为其他名称,它将无法工作,因为它将在 RootObject 类中搜索 psychoal3x。有谁知道如何解决这个问题?
编辑
好的,所以我稍微更改了代码,这就是它的样子
这是修改后的代码
try
{
using (var httpClient = new HttpClient())
{
HttpResponseMessage response = httpClient.GetAsync(url).Result;
response.EnsureSuccessStatusCode();
string result = response.Content.ReadAsStringAsync().Result;
var data = JsonConvert.DeserializeObject<Dictionary<string, SummonerDto>>(result);
var name1 = data.First().Value.name;
var id = data.First().Value.id;
var profileIconId1 = data.First().Value.profileIconId;
var revisionDate1 = data.First().Value.revisionDate;
sumId = id;
sumProfileIconId = profileIconId1;
sumRevisionDate = revisionDate1;
System.Diagnostics.Debug.WriteLine("{0} this is the {1}", data.First().Value.name, data.First().Value.profileIconId);
}
}catch(Exception ex)
{ System.Diagnostics.Debug.WriteLine(ex.Message); }
public class SummonerDto
{
public int id { get; set; }
public string name { get; set; }
public int profileIconId { get; set; }
public int summonerLevel { get; set; }
public long revisionDate { get; set; }
}
其中 sumName 是调用 api 时更改的帐户名称。
【问题讨论】:
-
当 v1.0 API 发布时,我为此创建了几个客户端。然而那是一年多以前的事了,它需要更新。他们在这里! github.com/JonDouglas/LoLFit / github.com/JonDouglas/LoLRank