[英]Parsing Json in C# with JSON.NET
我正在用C#開發一個應用程序,該程序使用Backpack.tf的api獲取玩家在名為TF2的游戲中的背包價值。
目前的代碼是:
(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代碼的第一個attemopt,由於某些原因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(或字符串)。
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; }
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.