簡體   English   中英

使用JSON.NET在C#中解析Json

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM