C# C-'无法将字符串转换为整数:2174837884。'中断。似乎不知道我在哪里这么做?
使用以下代码获取标题中提供的错误:C# C-'无法将字符串转换为整数:2174837884。'中断。似乎不知道我在哪里这么做?,c#,C#,使用以下代码获取标题中提供的错误: var TopScores = await osuApi.GetScoresAsync(857477); 在GetScoresAsync上: public async Task<ReadOnlyCollection<Scores>> GetScoresAsync(long b, object u = null, Mods m = 0, int limit = 50) { var request = Create
var TopScores = await osuApi.GetScoresAsync(857477);
在GetScoresAsync上:
public async Task<ReadOnlyCollection<Scores>> GetScoresAsync(long b, object u = null, Mods m = 0, int limit = 50)
{
var request = CreateRequestGetScores(ApiKey, b, u, m, limit);
var response = await request.GetResponseAsync();
using (var stream = new StreamReader(response.GetResponseStream()))
{
return ParseGetScores(await new StreamReader(response.GetResponseStream()).ReadToEndAsync());
}
}
编辑:我无法准确指出错误所在的原因是因为此代码取自一个librarydll,我只能以自己的项目形式查看它,并且不能直接调试它。如果没有看到Scores类,很难说这是错误所在,但Scores可能有一个属性,可能如下所示:
public int Score { get; set;}
您试图阅读的json可能有以下内容
Scores: [{ Score: 2174837884 },{Score: 2 }, ...]
JsonTextReader使用反射或其他方法初始化Scores类,当它看到值2174837884太大,无法放入int,而不是截断int时,它会抛出异常。int在c中可以保存的最大值是2147483647
希望您可以更改Scores类并将int设为long,否则您可能必须捕获此异常并找到一些方法来处理它。new ScoresjsonReader您可以从json创建一个新的Scores对象。这很可能是你的错误。我想你应该使用long而不是ints。请给我们看一下分数构造函数和JSON。谢谢你的回答,伙计们,吉尔·贝茨:不确定我怎么不应该这样做,因为列表是基于分数的,没有看到任何其他方式将分数列表中的结果添加到艾米:似乎stackoverflows的评论字符限制太长了,hmm@T.Std对于像这样的额外新信息,我们希望您将信息放在那里。另一个选择是,如果您永远无法获得否定分数,则转到uint而不是int。-能够将分数上传到hastebin上!非常感谢您以前的投入!然而,我希望它像放一个int一样简单,这个库最初不是我制作的,所以我没有完全意识到我在看什么。链接断了。链接通常不好发布,因为它们不可靠。可能最好在问题中发布代码内部分数JSONTEXTREADER jsonReader{long Depth=jsonReader.Depth;while jsonReader.Read然后转到一个不相关的切换案例,但我能找到的关于分数定义方式的唯一参考只是一个内部调用@spectabularbob EDIT:代码片段聚在一行:s中
public int Score { get; set;}
Scores: [{ Score: 2174837884 },{Score: 2 }, ...]