从JSON文件C#读取

时间:2017-08-01 06:07:29

标签: c# json

嘿伙计们我有这个json文件(摘录): https://hastebin.com/uzifiteqol.json 我创建了一个discord bot响应命令,其中一个命令是* card(卡名) 此JSON文件提供所有卡的统计信息,但我希望用户根据idname(他放置的卡名称)访问lvl 9统计信息 例如: *卡箭头 这应该给用户json中显示的lvl 9箭头的区域损坏,但我不知道如何访问此统计数据。这是我到目前为止所拥有的:

string jsonString = File.ReadAllText("/Users/me/Desktop/cardstatsfile.json");

这是我的计算机上的json文件位置(mac) 我不知道怎么去那里,我以为我需要JToken.parse并通过文件解析来查找“idname”或用户指定的卡片。提前致谢!

编辑:澄清:因为有75张牌,我想通过提供idname获得elixircost,rarity,ect以及所有lvl 9统计数据的值。或者我是否需要重新格式化JSON才能执行此操作?

2 个答案:

答案 0 :(得分:4)

如下所示反序列化为POCO,然后执行操作

public class Stat
{
    public int level { get; set; }
    public int areaDamage { get; set; }
    public int crownTowerDamage { get; set; }
    public int? hitpoints { get; set; }
    public int? dps { get; set; }
}

public class RootObject
{
    public string _id { get; set; }
    public string idName { get; set; }
    public string rarity { get; set; }
    public string type { get; set; }
    public string name { get; set; }
    public string description { get; set; }
    public int arena { get; set; }
    public int elixirCost { get; set; }
    public int order { get; set; }
    public int __v { get; set; }
    public int radius { get; set; }
    public string target { get; set; }
    public List<Stat> stats { get; set; }
    public string statsDate { get; set; }
    public int? hitSpeed { get; set; }
    public int? speed { get; set; }
    public int? deployTime { get; set; }
    public double? range { get; set; }
    public int? count { get; set; }
    public string transport { get; set; }
}

答案 1 :(得分:1)

编写一些POCO类,以对象形式反序列化后存储该数据。使用Newtonsoft进行反序列化任务。 JsonConvert课程是你的朋友。