因此,我只想执行一个获取帐户的排名和pp并按排名对它们进行排序的命令,问题是这是否有可能或者我只是在胡说八道?
[Command("rank")]
public async Task RankList([Remainder]string usernames = null)
{
string[] usernameList = usernames.Split(",");
string url = $"";
WebClient profile = new WebClient();
int countUsernames = usernameList.Count();
string[] ranking = new string[countUsernames];
dynamic[] ranks = new dynamic[countUsernames];
string[] pp_rank = new string[countUsernames];
float[] pp_raw = new float[countUsernames];
for (int i = 0; i < usernameList.Count(); i++)
{
url = $"https://osu.ppy.sh/api/get_user?k={k}&u={usernameList[i]}";
ranking[i] = profile.DownloadString(url);
ranks[i] = JsonConvert.DeserializeObject(ranking[i]);
pp_rank[i] = (string)ranks[0]["pp_rank"];
pp_raw[i] = ranks[0]["pp_raw"];
}
}
我收到错误消息:
使用无效键访问的JArray值:“ pp_rank” Int32 arrey索引 预期的
基本思想是,如果我获得用户名,则可以按等级对它们进行排序,而我只是想这样做,但是我不知道这样做是否可行!
答案 0 :(得分:1)
init
显然是return reduce(execution::seq, cbegin(coeffs), cend(coeffs), 0.0, ...);
的数组(ranks
仅将类型检查推迟到运行时)。 JArray
模拟一个普通的C#数组,该数组不能由字符串索引,只能由数字索引(因此会出错)。
您需要索引数组(给出dynamic
),然后才能尝试获取属性:
JArray
话虽如此,这确实很难正确读取或写入。如果您反序列化为一个代表要获取的数据的类,则不会出现此类错误。