我刚刚掌握了JSON.NET
,到目前为止它很棒。
但是,我无法弄清楚如何确定序列化对象的type
。
如何确定对象的施放?
要澄清我的问题,假设我想这样做
string json = <<some json i don't know>>
var data = JsonConvert.DeserializeObject(json);
if (data is Person)
{
//do something
}
else if (data is Order)
{
//do something else
}
json.net支持这种功能?
您可以使用dynamic
类型
JsonConvert.DeserializeObject<dynamic>(JSONtext)
它可能会帮助您
Idictionary&Lt;字符串,jtoken&gt;jsondata = jobject.parse(yourjsonstring); foreach(keyvaluepair&lt; string,jsondata中的jtoken&gt; element) { 字符串Innerkey = element.key; 如果(element.value是jarray) { //过程Jarray } 否则if(element.value是企业) { //过程验证 } }
如果您控制序列化,则可以使用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
对于仍在尝试执行此操作的任何人,我建议使用
JsonConvert.DeserializeObject<ExpandoObject>(JSONtext)