2015-04-05 35 views
0

我想從RESTFULL API解析JSON答案。我通常使用NewtonSoft Json.Net來反序列化對象(藉助諸如Json2Csharp之類的工具)。解析不可預知的類型名稱的Json對象

雖然這一次,我從web服務得到的答案更復雜。

答案是像如下:(見完整的答案here

[ 
    { 
     "semester": 0, 
     "modules": { 
      "B-ANG-052": {...}, 
      "B-ANG-056": {...}, 
      ... 
    }, 
    { 
     "semester": 1, 
     "modules": { 
      "BSU-CPR-125": {...}, 
      "BSU-BPR-098": {...}, 
      ... 
    }, 
    ... 
[ 

問題是,對象B-ANG-052B-ANG-056BSU-CPR-125BSU-BPR-098是同一類型,但其數量和名稱各不相同,我不能在查詢之前預測他們的姓名和號碼。

Idealy,我希望能夠像

​​

創造的東西,但是很明顯Json.Net當我嘗試這樣做,拋出一個Exeption。

我非常感謝在這件事上的一些幫助,因爲我一直沒能找到任何線索。

提前致謝!

回答

1
public class Modules 
{ 
    public List<ModuleRessource> Modules { get; set; } 
} 

更改爲:

public class Modules { 
    public Dictionary<string, someObject> { get; set; } 
} 

someObject應該是無論是在{...}與關鍵B-ANG-052。這當然只適用於鑰匙是唯一的。然後,您可以抓住字典的鍵並使用它們循環並抓取someObject。我真的不知道如何才能創建對象並在不知道該對象被調用的情況下使用該對象。如果{...}始終相同,請創建一個類並將其反序列化爲字典中的someObject

您也可以嘗試使用動態類型,但仍會遇到不知道對象被調用的問題。您將使用反射來遍歷主對象的屬性,然後檢索它們。

+0

謝謝你的快速回答!我馬上試試:) – 2015-04-05 15:47:24

+0

**你太棒了。** – 2015-04-05 15:58:16

+0

@HippolyteBarraud樂於助人。 – Yatrix 2015-04-06 01:28:36