2015-11-11 188 views
1

我從服務器獲取JSON響應,但JSON不是一種格式。所以很顯然,創建類將其反序列化是沒有意義的。所以,我試圖使用dynamic,但我無法閱讀迴應。C#解析動態JSON字符串

樣品JSON字符串是

" {"hm_xytrict":"HM Tricky District - oop","hmSD":"HM Pool District"}" 

注意, 「hm_xytrict」 和 「hmSD」 每次

我使用

dynamic jsonResponse = JsonConvert.DeserializeObject(responseString); 

因爲我現在的這個特定的情況下會有所不同使用jsonResponse.hm_xytrictjsonResponse.hmSD,但由於它們也是動態的,所以我怎樣才能讀取jsonResponse的所有情況。

謝謝 哈姆扎

+0

改用JObject? –

回答

3

所以,你可以使用API​​ JSON.NET的不同部分,從你的對象分析和提取數據:

var jObj = JObject.Parse(json); 
foreach (JProperty element in jObj.Children()) 
{ 
    string propName = element.Name; 
    var propVal = (string)element.Value; 
} 
+1

甚至不需要閱讀各個元素,你可以反序列化爲從JSON.net動態http://stackoverflow.com/questions/4535840/deserialize-json-object-into-dynamic-object-using-json-net –

+0

太棒了。它像一個魅力:) – Hamza

0

更有趣,你可以直接解析一個JSON字符串動態對象

string responseString = @"{""hm_xytrict"":""HM Tricky District - oop"",""hmSD"":""HM Pool District""}"; 

dynamic jsonResponse = JObject.Parse(responseString); 
foreach (var item in jsonResponse) 
{ 
    Console.WriteLine(item.Name); 
    Console.WriteLine(item.Value); 
} 

哪個在你的例子會輸出

hm_xytrict 
HM Tricky District - oop 
hmSD 
HM Pool District