这是不是 JSON的dup。. NET:将JSON对象的一部分反序列化为字典
我有JSON{"计数":2,"Head": {"itemId":…,"质量":……},"Legs": {"itemId":…,"质量":……}}
我需要将它反序列化到一个字典:IDictionary<GearSlot, Item>
如果我试图反序列化整个JSON,我会得到一个错误,因为它无法将"Count:2"
反序列化为<GearSlot, Item>
。
GearSlot
是一个enum,有~17+个值。现在我已经定义了class:
public class Items {
property Item Head { get; set; }
property Item Legs { get; set; }
...
}
它可以工作,但不优雅和笨拙。
有什么建议吗?
根据这个答案和这个答案,您可以反序列化部分JSON片段,然后重新集成。
var root = JObject.Parse(jsonString);
var serializer = new JsonSerializer();
var expectedResult = serializer.Deserialize<ExpectedType>(root["fragment"].CreateReader());
所以对你来说
var items = new Items {
Head = serializer.Deserialize<Item>(root["Head"])
, Legs = serializer.Deserialize<Item>(root["Legs"])
};
您可以尝试使用客户转换器。例如:http://weblogs.asp.net/thangchung/archive/2010/08/26/customizing-the-converter-for-json-net.aspx