我正在解析JSON文本。有时我会在文本中获得Array
和有时Object
类型。我试着按如下方式检查类型:
dynamic obj = JsonConvert.DeserializeObject(text); //json text
if (obj is Array)
{
Console.WriteLine("ARRAY!");
}
else if (obj is Object)
{
Console.WriteLine("OBJECT!");
}
我在调试时检查了类型。解析对象时obj
的{{1}}属性为Type
,解析数组时Object
的属性为Array
。但是,对于这两种情况,控制台输出都是OBJECT!
。显然我正在以错误的方式检查类型。检查类型的正确方法是什么?
修改
JSON内容:
[ {"ticket":"asd", ...}, {..} ]
或{ "ASD":{...}, "SDF":{...} }
在这两种情况下,我都将输出设为OBJECT!
。
修改#2
我改变了@Houssem建议的类型检查顺序。产量仍然相同。因此我也改变了OP。我的代码现在就是这样,我仍然得到相同的结果。
答案 0 :(得分:9)
试试这个,因为JSON.NET返回一个JToken类型的对象
if (((JToken)obj).Type == JTokenType.Array)
{
Console.WriteLine("ARRAY!");
}
else if (((JToken)obj).Type == JTokenType.Object)
{
Console.WriteLine("OBJECT!");
}