7

我正在解析 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具有解析对象和解析数组时的Type属性。然而,控制台输出适用于这两种情况。显然我以错误的方式检查类型。检查类型的正确方法是什么?ObjectArrayOBJECT!

编辑

JSON内容:

[ {"ticket":"asd", ...}, {..} ]或者{ "ASD":{...}, "SDF":{...} }

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

编辑#2

我按照@Houssem 的建议更改了类型检查顺序。还是一样的输出。因此,我也更改了 OP。我的代码现在是这样的,我仍然得到相同的结果。

4

1 回答 1

13

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

  if (((JToken)obj).Type == JTokenType.Array)
  {
    Console.WriteLine("ARRAY!");
  }
  else if (((JToken)obj).Type == JTokenType.Object)
  {
    Console.WriteLine("OBJECT!");
  }
于 2013-07-23T11:19:10.643 回答