2015-04-17 56 views
0

如何使用DataContractJsonSerializer來解析沒有修復名的JSON數組?假設一個JSON結構是這樣的:使用C#DataContractJsonSerializer解析JSON命名數組

{ 
"SUMMARY": 
{ 
    "0123": 
    [ 
    { 
     "Type": "Type_A", 
     "Duration": 100 
    } 
    ] 
} 
} 

在C#中,我可以初始化兩個數據如下對象使用DataContractJsonSerializer這樣來解析它們:

[DataContract] 
public class numberedStruct { 

    [DataMember(Name = "Type")] 
    public string Type {get; set;} 

    [DataMember(Name = "Duration")] 
    public int Duration{get; set;} 
} 

[DataContract] 
public class summaryStruct { 

    [DataMember(Name = "0123")] 
    public numberedStruct[] s; 

} 

但是,如果「0123」是什麼也變量,它可以是別的東西?所以我無法將DataMember名稱修改爲「0123」。

我怎樣才能得到「0123」作爲一個變量,也是在C#中的結構內的內容?

+0

取決於,結構是否相同,結構中的位置對於「0123」總是相同的? –

+0

變量名不能在c#中編號。 – ANewGuyInTown

+0

感謝您的意見。 「0123」只是一個例子。實際上它不是變量的名稱,它是真實情況下的變量值,因此它可以是「abcd」或「defg」。我不知道如何解析這種類型的結構,因爲它沒有靜態變量名稱。 –

回答

0

你可以嘗試把你的怪變量名詞典使用[JsonExtensionData]

[JsonExtensionData] 
public Dictionary<string, object> strangeVariables { get; set; } 

這將Response對象中去。

+0

嗨ANewGuylnTown,謝謝你的建議。你能否詳細給我一下代碼。我嘗試了下面的結構,但它仍然爲我返回一個空值。 [DataContract] public class summaryStruct { [JsonExtensionData] public IDictionary s; } –

+0

非常感謝。它不工作。 我必須使用Newtonsoft.Json.JsonConvert中提供的serialize/deserialize函數以獲取它。使用.NET默認的DataContractJsonSerializer將不起作用。 –