【发布时间】:2019-09-09 11:28:21
【问题描述】:
我正在尝试从 Valve 的 API 反序列化一些 JSON 格式的统计数据。下面的代码在反序列化时不会抛出任何异常,只有在之后尝试使用统计信息时才会抛出异常。反序列化后,所有统计信息都没有值。 Valve 的响应如下所示:
"playerstats":{
"steamID":"",
"gameName":"",
"stats":[
{
"name":"deaths",
"value":5062
}, etc etc..
这是我的 Rust 课程(Rust 是我从中获取统计数据的游戏。):
public class Rust
{
public int steamID { get; set; }
public string gameName { get; set; }
public Array stats { get; set; }
}
这是反序列化代码:
Rust getStats = JsonConvert.DeserializeObject<Rust>(str);
foreach (var stat in getStats.stats) //< ----- Exception: Object reference not set to an instance of an object.
{
parsed += stat.ToString();
}
'parsed' 然后返回并用于打印所有统计信息,'str' 是 Valve 的 json 响应。我将整个 JSON 响应粘贴到 pastebin 以防上述数据不够:https://pastebin.com/uJZSTF3G
我尝试在 Rust 类中单独命名一些统计信息,而不是使用数组。
我希望输出显示所有反序列化的统计信息,例如在控制台中。
【问题讨论】:
-
public Array stats { get; set; },我认为这可以改进一点。您能否为数组的内容创建一个具有两个属性的类定义,即name和value?然后将Array替换为您的List<YOUR-NEW-CLASS>。希望对您有所帮助。 -
谢谢,一旦我得到这个工作,我一定会这样做。