2013-07-23 72 views
4

我正在解析JSON文本。有時我會在文本中獲得Array,有時候會獲得Object類型。我試圖檢查類型如下:C#,JSON解析,動態變量。如何檢查類型?

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

我在調試時檢查了類型。 obj在分析數組時分配Type屬性爲Object,解析數組時分配Array。但是,對於這兩種情況,控制檯輸出爲OBJECT!。很顯然,我以錯誤的方式檢查類型。什麼是檢查類型的正確方法?

編輯

JSON內容:

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

在這兩種情況下,我得到的輸出爲OBJECT!

EDIT#2

我改變類型檢查順序@Houssem建議。仍然是相同的輸出。所以我也改變了OP。我的代碼現在就是這樣,我仍然得到相同的結果。

回答

7

嘗試此,由於JSON.NET返回類型的對象JToken

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