2013-04-30 92 views
0

我嘗試序列化/反序列化下面的類對象:最佳方式嗎?

public class LiveDataFeedModuleConfiguration 
{ 
    public Dictionary<VendorID, dynamic> LiveDataFeedAPIConfigurations { get; private set; } 

    public LiveDataFeedModuleConfiguration(Dictionary<VendorID, dynamic> liveDataFeedAPIConfigurations) 
    { 
     this.LiveDataFeedAPIConfigurations = liveDataFeedAPIConfigurations; 
    } 

    public void AddElement(VendorID vendorId, dynamic liveDataFeedAPIConfiguration) 
    { 
     LiveDataFeedAPIConfigurations.Add(vendorId, liveDataFeedAPIConfiguration); 
    } 
} 

我試圖ServiceStack但是當我反序列化存儲爲字典中的值的動態對象是空的。我也嘗試過Json.Net,但我不喜歡反序列化後的字典包含JObjects。我只是想有LiveDataFeedModuleConfiguration類型的對象返回包含Dictionary<VendorID, dynamic>在那裏我可以很容易的.Net投從動態tytpe到對象類型。在Json.net中有沒有辦法繞過JObject「混亂」,並正確地反序列化爲存儲在字典值中的類型?我用Newtonsoft.Json.JsonConvert.DeserializeObject<LiveDataFeedModuleConfiguration>(string jsonContent);。但它將反序列化爲不需要的jObject類型的字典值。

任何解決方案應該得到這個與json.net工作(給定的,我可以在一個通用的反序列化方法做正確的序列化)或其他庫的歡迎。

感謝

+0

它並不像你在這方面取得了很大的成功。您可能需要從頭開始創建此功能或避免使用字典,並完全避免此問題。當你有一個解決方案時,請在這裏回覆 – ldgorman 2013-05-01 12:22:33

+0

@Idogorman,的確,我確信大多數.Net JSON序列化程序庫庫處理動態性的能力很差。我決定逐個序列化每個POCO,而不是將它們存儲在動態字典中。 – 2013-05-01 13:58:10

回答

0

我結束了在字典對於JSON序列化的目的存儲動態移開。我提到的大多數圖書館在處理包含動態的字典時都非常不穩定。

-2

您是否嘗試過使用JavaScriptSerializer類?至於我可以告訴你可以寫類似

var _object = JavaScriptSerializer.Deserializer<LiveDataFeedModuleConfiguration>(yourJSON); 

,你會得到你的LiveDataFeedModuleConfiguration實例

+0

我得到我的LiveDataFeedModuleConfiguration,這不是問題。問題在於,當我首先序列化時,我沒有得到正確的對象類型,這些類型存儲在字典中。 – 2013-04-30 09:28:43

+0

JavaSriptSerializer只能處理字符串或對象類型的字典鍵。 – 2013-04-30 10:24:50

0

檢查了這一點。 https://github.com/jsonfx/jsonfx

這適用於動態

+0

它似乎沒有工作,因爲它遇到麻煩反序列化到我的VendorID枚舉。但謝謝你的建議 – 2013-04-30 12:51:58