无法弄清楚如何将这个json映射到C#类

时间:2016-04-10 03:34:20

标签: c# json

所以我有下面的json,我想将Deseralize into Classes,所以我可以使用它。但问题是前两个字段与其他字段不同

"items": {
    "averageItemLevel": 718,
    "averageItemLevelEquipped": 716,
    "head": { ... },
    "chest": { ... },
    "feet": { ... },
    "hands": { ... }
    }

其中...是下面的Item类,但问题是其中2个字段是整数,其余字段是Item,总共大约有20个字段。所以我想做的就是将它们放入Dictionary<string, Item>,但是2个int字段阻止我将其去除。我正在使用JavaScriptSerializer.Deserialize<T>()来执行此操作。

我可以将每个项目作为自己的类,并将项目的名称作为类的名称,但我发现它非常糟糕,每次都重复这么多,因为我不能以后也很难处理迭代字段,尽可能Dictionary。知道如何克服这个问题吗?

public class Item
{
    public ItemDetails itemDetails { get; set; }
    public int id { get; set; }
    public string name { get; set; }
    public string icon { get; set; }
    public int quality { get; set; }
    public int itemLevel { get; set; }
    public TooltipParams tooltipParams { get; set; }
    public List<Stat> stats { get; set; }
    public int armor { get; set; }
    public string context { get; set; }
    public List<int> bonusLists { get; set; }
}

更新:从评论中我提出了这个解决方案

JObject jsonObject = JObject.Parse(json);

jsonObject["averageItemLevel"] = int.Parse(jsonObject["items"]["averageItemLevel"].ToString());
jsonObject["averageItemLevelEquipped"] = int.Parse(jsonObject["items"]["averageItemLevelEquipped"].ToString());
jsonObject["items"]["averageItemLevel"].Parent.Remove();
jsonObject["items"]["averageItemLevelEquipped"].Parent.Remove();

var finalJson = jsonObject.ToString(Newtonsoft.Json.Formatting.None);
var character = _serializer.Deserialize<Character>(finalJson);
character.progression.raids.RemoveAll(x => x.name != "My House");

return character

0 个答案:

没有答案