2017-05-06 55 views
-1

对于我的问题的糟糕解释,我很抱歉。 我正在尝试读取包含数据的JSON数组。阅读包含数组的JSON数组(?)C#

这里的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以及如何使用但我在一个完全不知如何使用这个。任何帮助,将不胜感激。

+0

尝试[json2csharp(http://json2csharp.com/)。 –

回答

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