我正在用c#开发一个应用程序,使用backpack获取《军团要塞2》中玩家背包的价值。tf的api .
目前代码是:
(MAIN CLASS)
JsonConvert.DeserializeObject<Json1>(json);
(END OF MAIN CLASS)
public class Json1 {
public static List<Json2> response { get; set; }
}
public class Json2
{
public static int success { get; set; }
public static int current_time { get; set; }
public static IEnumerable<Json4> players { get; set; }
}
public class Json4 {
public static int steamid { get; set; }
public static int success { get; set; }
public static double backpack_value { get; set; }
public static string name { get; set; }
}
我已经把所有其他的垃圾从主类中剔除了,但足以说,是的,我已经把json代码变成了json字符串,准备好反序列化(用Console.Writeline测试)
问题是。每当我使用Json4.name这样的东西时(当写入控制台时)它总是返回0。
对不起,如果我犯了一个愚蠢的错误,但我想我已经尝试过的东西,如删除静态,改变变量类型等,但我仍然不能得到它的工作。请注意,这是我第一次尝试反序列化Json代码,由于某些原因http://json2csharp.com/不起作用,我自己在底层编写了类。下面是我要反序列化的Json:
{
"response":{
"success":1,
"current_time":1365261392,
"players":{
"0":{
"steamid":"76561198045802942",
"success":1,
"backpack_value":12893.93,
"backpack_update":1365261284,
"name":"Brad Pitt",
"stats_tf_reputation":2257,
"stats_tf_supporter":1,
"notifications":0
},
"1":{
"steamid":"76561197960435530",
"success":1,
"backpack_value":4544.56,
"backpack_update":1365254794,
"name":"Robin",
"notifications":0
}
}
}
}
格式有点乱。也请原谅一些拼写错误:))
你的代码有几个问题:
a)所有字段都是静态的。删除静态;你需要它们是实例成员。
b) Json1
中的response属性应该是单个实例,而不是一个列表。
c)玩家需要是一个字典(或自定义类型),而不是一个IEnumerable,因为它不是JSON中的数组。
d) StreamId有非常大的数字,无法放入int;将其更改为long(或string)。
public class Json1
{
public Json2 response { get; set; }
}
public class Json2
{
public int success { get; set; }
public int current_time { get; set; }
public IDictionary<int, Json4> players { get; set; }
}
public class Json4
{
public long steamid { get; set; }
public int success { get; set; }
public double backpack_value { get; set; }
public string name { get; set; }
}