读取包含数组的JSON数组(?)C#

时间:2017-05-06 17:24:30

标签: c# json json.net

我提前为我的问题解释不好而道歉。 我试图读取包含数据的JSON数组。

以下是JSON的外观:

{
    "playerstats": {
        "steamID": "76561198071680006",
        "gameName": "GameName",
        "achievements": [
            {
                "apiname": "AchievementName1",
                "achieved": 0, <--- Data that I want to read
                "unlocktime": 0
            },
            {
                "apiname": "AchievementName2",
                "achieved": 0, <--- Data that I want to read
                "unlocktime": 0
            },
            {
                "apiname": "AchievementName2",
                "achieved": 1, <--- Data that I want to read
                "unlocktime": 1477847680
            }
        ]
        ,
        "success": true
    }
}

我试图看看Newtonsoft.Json以及如何使用它,但我完全不知道如何使用它。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您可以尝试JsonConvert.DeserializeObject来读取json数据。

具有

public class Rootobject
{
    public Playerstats playerstats { get; set; }
}

public class Playerstats
{
    public string steamID { get; set; }
    public string gameName { get; set; }
    public Achievement[] achievements { get; set; }
    public bool success { get; set; }
}

public class Achievement
{
    public string apiname { get; set; }
    public int achieved { get; set; }
    public int unlocktime { get; set; }
}

你可以试试这个:

var filePath = path to your file;

var jsonData = System.IO.File.ReadAllText(filePath);

Rootobject objectValue = 
    Newtonsoft.Json.JsonConvert.DeserializeObject<Rootobject>(jsonData);

注意:您应该从json数据中删除<--- Data that I want to read部分,因为它目前不是有效的json格式。

您可以访问所需的属性,例如

objectValue.playerstats.achievements[0].achieved //0
objectValue.playerstats.achievements[1].achieved //0
objectValue.playerstats.achievements[2].achieved //1