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

Var*_*lex 4 c# parsing typechecking json.net

我正在解析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!");
}
Run Code Online (Sandbox Code Playgroud)

我在调试时检查了类型.在解析对象和解析数组时obj具有Type属性.但是,控制台输出适用于这两种情况.显然我正在以错误的方式检查类型.检查类型的正确方法是什么?ObjectArrayOBJECT!

编辑

JSON内容:

[ {"ticket":"asd", ...}, {..} ] 要么 { "ASD":{...}, "SDF":{...} }

在这两种情况下,我得到输出为OBJECT!.

编辑#2

我改变了@Houssem建议的类型检查顺序.产量仍然相同.因此我也改变了OP.我的代码就是这样,我仍然得到相同的结果.

Swi*_*ift 9

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

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