序列化/反序列化.net object<->JSON的最佳方式,包含Dictionary

本文关键字:方式 包含 动态 Foo Dictionary 最佳 JSON 反序列化 net object 序列化 | 更新日期: 2023-09-27 18:11:24

我尝试序列化/反序列化以下类对象:

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(给定,我可以得到正确的序列化在一个通用的反序列化方法完成)或其他库是受欢迎的。

谢谢

序列化/反序列化.net object<->JSON的最佳方式,包含Dictionary<Foo,动态>

看看这个。https://github.com/jsonfx/jsonfx

这适用于动态

为了JSON序列化的目的,我最终放弃了在字典中存储动态。当涉及到处理包含动态的字典时,我提到的大多数库都非常不稳定。

只是以防万一你仍然考虑回到你的原始意图表达在你的代码,如你的问题:

http://forums.xamarin.com/discussion/comment/39084/Comment_39084

您是否尝试过使用JavaScriptSerializer类?据我所知,你可以写像

这样的东西
var _object = JavaScriptSerializer.Deserializer<LiveDataFeedModuleConfiguration>(yourJSON);

你将得到你的LiveDataFeedModuleConfiguration实例