2011-09-09 38 views
2

这是不JSON.NET: Deserializing part of a JSON object to a dictionaryJSON.NET反序列化部分作为字典

一个DUP我有JSON { “计数”:2, “头”:{ “的itemId”:.. , “质量”:...}, “腿”:{ “的itemId”:......, “质量”:...}}

我需要将其反序列化到一个字典:IDictionary<GearSlot, Item> 如果我尝试反序列化JSON整我得到一个错误,因为它未能反序列化"Count:2"<GearSlot, Item>

GearSlot是一个枚举,并且具有〜17个+值。在这个时候我已经定义了类:

public class Items { 
    property Item Head { get; set; } 
    property Item Legs { get; set; } 
    ... 
} 

它的作品,但不优雅和笨重。

有什么建议吗?

回答

2

this answerthis answer,你可以deserialize a partial JSON fragment然后重新整合。

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"]) 
};