Question

I'm parsing JSON texts. Sometimes I get Array and sometimes Object types in the text. I tried to check the type as follows:

dynamic obj = JsonConvert.DeserializeObject(text);  //json text
if (obj is Array)
{  
    Console.WriteLine("ARRAY!");
}
else if (obj is Object)
{
    Console.WriteLine("OBJECT!");
}

I checked the types while debugging. obj had Type property as Object when parsing objects and Array when parsing arrays. However the console output was OBJECT! for both situations. Obviously I'm checking the type in a wrong manner. What is the correct way to check the type?

EDIT

JSON contents:

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

In both situations I get the output as OBJECT!.

EDIT#2

I changed the typechecking order as @Houssem suggested. Still the same output. Therefore I changed the OP as well. My code is like this right now, and I still get the same result.

Was it helpful?

Solution

Try this, since the JSON.NET return an object of type JToken

  if (((JToken)obj).Type == JTokenType.Array)
  {
    Console.WriteLine("ARRAY!");
  }
  else if (((JToken)obj).Type == JTokenType.Object)
  {
    Console.WriteLine("OBJECT!");
  }
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top