而不是峰值,你可以反序列化为JSON.net显式使用ExtensionData相同的类型。例如:
if (reader.TokenType == JsonToken.StartArray)
{
var values = serializer.Deserialize<List<Dictionary<string, JToken>>>(reader);
objectContainer = ClassifyAndReturn(values);
}
private ObjectType ClassifyAndReturn(List<Dictionary<string, JToken>> values)
{
if (values.First().ContainsKey("self"))
{
string self = values.First()["self"].Value<string>();
if (self.Contains("customFieldOption"))
//... Then go into a series of if else cases to determine the object.
的对象的表示给定为串的词典来JToken,然后可以很容易地进行检查和手动分配或在某些情况下会自动反序列化(在壳体中的场中的一个是另一个目的)。
这里是一个对象的构造可能是什么样子:
internal myobject(Dictionary<string, JToken> source)
{
Self = source["self"].Value<string>();
Id = source["id"].Value<string>();
Value = source["value"].Value<string>();
}
的问题不是如何反序列化,但如何知道是干什么用的数据类型。 – mdoar
他明确指出:“这一切都可以告诉JSON.Net将其反序列化为。”这是我混乱的根源。很抱歉对于这个误会! – Bill
没关系。对不起,也许我不清楚它。目前我正在尝试使用ExtensionData来查看它是否解决了我的问题。 http://james.newtonking.com/archive/2013/05/08/json-net-5-0-release-5-defaultsettings-and-extension-data –