C#,JSON解析,动态变量。如何检查类型?

时间:2013-07-23 11:14:19

标签: c# parsing json.net typechecking

我正在解析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。我的代码现在就是这样,我仍然得到相同的结果。

1 个答案:

答案 0 :(得分:9)

试试这个,因为JSON.NET返回一个JToken类型的对象

  if (((JToken)obj).Type == JTokenType.Array)
  {
    Console.WriteLine("ARRAY!");
  }
  else if (((JToken)obj).Type == JTokenType.Object)
  {
    Console.WriteLine("OBJECT!");
  }