Tell me more ×
Stack Overflow is a question and answer site for professional and enthusiast programmers. It's 100% free, no registration required.

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.

share|improve this question

1 Answer

up vote 0 down vote accepted

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!");
  }
share|improve this answer
Still I get the same output even though I changed the order of type checking. There should be something else.. – Volkan İlbeyli 18 hours ago

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.