JSON.NET将JSON对象的一部分反序列化为字典



这是不是 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

相关内容

  • 没有找到相关文章

最新更新