Reputation: 3463
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.
Upvotes: 10
Views: 15182
Reputation: 1881
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!");
}
Upvotes: 16