序列化/反序列化.Net对象的最佳方法&lt; - &gt; JSON,包含Dictionary <foo,dynamic =“”>?</foo,>

时间:2013-04-30 09:09:18

标签: c# json serialization json.net deserialization

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

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

由于

4 个答案:

答案 0 :(得分:0)

检查一下。 https://github.com/jsonfx/jsonfx

这适用于动态

答案 1 :(得分:0)

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

答案 2 :(得分:0)

万一你仍然考虑在代码中回到原来的意图表达,如你的问题:

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

'希望这有帮助,

答案 3 :(得分:-2)

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

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

您将获得LiveDataFeedModuleConfiguration实例