2013-04-30 36 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