Я знаю, что могу использовать JsonConvert.DeserializeObject<T>(string)
, однако мне нужно заглянуть в_type
(объекта, который может не быть первым параметром ), чтобы определить конкретный класс для приведения. По сути, я хочу сделать что-то вроде:
//Generic JSON processor for an API Client.
function MyBaseType ProcessJson(string jsonText)
{
var obj = JObject.Parse(jsonText);
switch (obj.Property("_type").Value.ToString()) {
case "sometype":
return obj.RootValue<MyConcreteType>();
//NOTE: this doesn't work...
// return obj.Root.Value<MyConcreteType>();
...
}
}
...
// my usage...
var obj = ProcessJson(jsonText);
var instance = obj as MyConcreteType;
if (instance == null) throw new MyBaseError(obj);