我尝试序列化/反序列化以下类对象:
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也一样,但我不喜欢字典在反序列化之后包含对象。我只是想有一个类型为LiveDataFeedModuleConfiguration
的对象返回,其中包含Dictionary<VendorID, dynamic>
,我可以很容易地在。net中从动态类型转换为已知的对象类型。在Json.net中是否有一种方法可以规避jobobject"杂乱"并正确地反序列化为存储在字典值中的类型?我用的是Newtonsoft.Json.JsonConvert.DeserializeObject<LiveDataFeedModuleConfiguration>(string jsonContent);
。但是它反序列化为jObject类型的字典值,这是不希望的。
任何解决方案,得到这个工作与json.net(给定,我可以得到正确的序列化在一个通用的反序列化方法完成)或其他库是受欢迎的。
谢谢
看看这个。https://github.com/jsonfx/jsonfx
这适用于动态
为了JSON序列化的目的,我最终放弃了在字典中存储动态。当涉及到处理包含动态的字典时,我提到的大多数库都非常不稳定。
只是以防万一你仍然考虑回到你的原始意图表达在你的代码,如你的问题:
http://forums.xamarin.com/discussion/comment/39084/Comment_39084
您是否尝试过使用JavaScriptSerializer类?据我所知,你可以写像
这样的东西var _object = JavaScriptSerializer.Deserializer<LiveDataFeedModuleConfiguration>(yourJSON);
你将得到你的LiveDataFeedModuleConfiguration
实例