2012-01-09 63 views
3

我以JSON對象的形式從RESTful API獲取響應。通常情況下,當密鑰已知時,我可以解析它。舉例來說,我創建了一個User類是這樣的:解析C#中的JSON

[DataContract] 
public class User 
{ 
    [DataMember] 
    public string id { get; set; } 

    [DataMember] 
    public string name { get; set; } 

    [DataMember] 
    public string email { get; set; } 
} 

我所要做的就是拉讀取響應了我的JSON解串器,並告訴它的輸出是一個<用戶>,我好去。在提出其他請求時(如銷售數據),這一點就不足爲奇了。我回來的反應是這樣的:

{ 
    "2010-11-24": { 
    "country": null, 
    "iso": null, 
    "product": null, 
    "downloads": 39, 
    "net_downloads": 38, 
    "updates": 6, 
    "revenue": "19.02", 
    "returns": 1, 
    "gift_redemptions": 0, 
    "promos": 0 
    }, 
    "2010-11-25": { 
    "country": null, 
    "iso": null, 
    "product": null, 
    "downloads": 63, 
    "net_downloads": 63, 
    "updates": 6, 
    "revenue": "37.00", 
    "returns": 0, 
    "gift_redemptions": 0, 
    "promos": 0 
    } 
} 

如果我能該類建模爲[DataContract]那麼我會生金,但由於第一個關鍵是到目前爲止,我不能硬編碼。

是否有一個JSON庫可以採取這種類型的響應並將其轉換爲強類型的C#類?

爲了記錄在案,我使用的是JSONHelper used in this SO question.

+0

它們的鍵應該表示爲'string'還是'DateTime'? – svick 2012-01-09 15:32:29

+0

我會把它作爲一個字符串或日期時間 - 沒關係。 – 2012-01-09 16:36:13

回答

5

JSON.NET被公認爲是最好的/最快/最穩定的JSON的C#庫。我已經使用過它,它可以像廣告一樣工作。

+0

所以,我已經下載並查看了文檔。它看起來像我可以做我之前做的完全一樣,創建一個類來反序列化我的JSON到......但我仍然卡住。如何反序列化成一個我不知道密鑰的類? – 2012-01-11 17:06:18