所以我有下面的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