我目前得到一個JSON對象類似以下的形狀未知鍵:反序列化詞典與RestSharp
{
more data here...
"years": {
"value": 2013,
"item1": {
"total": 0.1044,
"Low": 0.0143,
"Mid": 0.1044,
"High": 0.3524,
"min": 0.0143,
"max": 0.3524,
},
"item2": {
"total": 0.1702,
"Low": 0.167,
"Mid": 0.1702,
"High": 0.1737,
"min": 0.167,
"max": 0.1737,
},...
}
}
我遺憾的是,有超過JSON的形狀沒有控制。
我試圖讓RestSharp反序列化到一個對象,其中項目1,項目2本,其餘補入字典目前,我有以下代碼:
public class Year
{
public int Value { get; set; }
public Dictionary<string, Data> Data { get; set; }
}
public class Data
{
public decimal Total { get; set; }
public decimal Low { get; set; }
public decimal Mid { get; set; }
public decimal High { get; set; }
public decimal Min { get; set; }
public decimal Max { get; set; }
}
而且我希望能得到項目1, Item2等作爲Dictionary的鍵和下面的值來填充Data類作爲Dictionary的值。但目前它不工作(我的結構的其餘部分是,它只是這個最內部的部分)。我剛剛接近錯誤的結構?我想避免必須爲Item1和Item2創建特定的類。
謝謝爲您的輸入。我可能應該提到我無法控制JSON格式,我會編輯它。我試圖避免必須引入另一個庫,但我會記住JSON.Net。 –
您可以將傳入的JSON映射到您想要的外觀,以便您輕鬆重構 – Chris
我強調重構它,因爲我認爲該模型實際上在邏輯上已損壞。在「年」之下,你有一堆屬性,未知名稱,其中一個將是一個字符串,其餘的將是Data對象。我們不知道名稱會是什麼,因此我們無法知道什麼C#變量名甚至綁定到。另一種方法是使用這個:http://www.newtonsoft.com/json/help/html/DeserializeCustomCreationConverter.htm你可以編寫自定義規則並覆蓋任務,使其看起來如何,我想。 – Chris