我抓住了JSON.NET
,到目前为止一直很棒。
但是,在反序列化时,我无法确定如何确定序列化对象的type
。
如何确定要投射它的对象类?
为了澄清我的问题,让我们说我想这样做
string json = <<some json i do'nt know>>
var data = JsonConvert.DeserializeObject(json);
if (data is Person)
{
//do something
}
else if (data is Order)
{
//do something else
}
Json.NET是否支持这种功能?
答案 0 :(得分:14)
您可以使用dynamic
类型
JsonConvert.DeserializeObject<dynamic>(JSONtext)
答案 1 :(得分:3)
它可以帮到你
IDictionary < string, JToken > Jsondata = JObject.Parse(yourJsonString); foreach(KeyValuePair < string, JToken > element in Jsondata) { string innerKey = element.Key; if (element.Value is JArray) { // Process JArray } else if (element.Value is JObject) { // Process JObject } }
答案 2 :(得分:0)
如果您控制序列化,则可以使用TypeNameHandling设置
var settings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All };
var toBeSerialized = settings; // use the settings as an example data to be serialized
var serialized = JsonConvert.SerializeObject(toBeSerialized, Formatting.Indented, settings);
var deserialized = JsonConvert.DeserializeObject(serialized, settings);
var deserializedType = deserialized.GetType().Name; // JsonSerializerSettings