Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 序列化/反序列化.Net对象的最佳方法<-&燃气轮机;JSON,包含字典<;Foo,dynamic>;?_C#_Json_Serialization_Json.net_Deserialization - Fatal编程技术网

C# 序列化/反序列化.Net对象的最佳方法<-&燃气轮机;JSON,包含字典<;Foo,dynamic>;?

C# 序列化/反序列化.Net对象的最佳方法<-&燃气轮机;JSON,包含字典<;Foo,dynamic>;?,c#,json,serialization,json.net,deserialization,C#,Json,Serialization,Json.net,Deserialization,我尝试序列化/反序列化以下类对象: public class LiveDataFeedModuleConfiguration { public Dictionary<VendorID, dynamic> LiveDataFeedAPIConfigurations { get; private set; } public LiveDataFeedModuleConfiguration(Dictionary<VendorID, dynamic> liveDa

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

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);
    }
}
公共类LiveDataFeedModuleConfiguration
{
公共字典LiveDataFeedApicConfiguration{get;private set;}
公共LiveDataFeedModuleConfiguration(字典LiveDataFeedApicConfiguration)
{
this.LiveDataFeedAPIConfigurations=LiveDataFeedAPIConfigurations;
}
public void AddElement(VendorID VendorID,dynamic liveDataFeedAPIConfiguration)
{
添加(vendorId,LiveDataFeedApicConfiguration);
}
}
我尝试了ServiceStack,但是当我反序列化作为字典值存储的动态对象时,这些对象是空的。我也尝试过Json.Net,但我不喜欢字典在反序列化后包含作业对象。我只想返回一个
LiveDataFeedModuleConfiguration
类型的对象,该对象包含
字典
,我可以轻松地将.Net从动态类型转换为已知的对象类型。在Json.net中有没有办法绕过JObject“混乱”并正确地反序列化为字典值中存储的类型?我使用了
Newtonsoft.Json.JsonConvert.DeserializeObject(字符串jsonContent)。但它反序列化为jObject类型的字典值,这是不需要的

欢迎使用json.net(给定,我可以通过通用反序列化方法完成正确的序列化)或其他库来实现这一点的任何解决方案

谢谢

你试过使用课堂吗?据我所知,你可以这样写

var _object = JavaScriptSerializer.Deserializer<LiveDataFeedModuleConfiguration>(yourJSON);
var\u object=JavaScriptSerializer.Deserializer(yourJSON);
您将获得您的
LiveDataFeedModuleConfiguration
实例

检查此项


这适用于动态

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

>P>只是在你的代码中,你仍然会考虑回到你原来的意图表达,就像你的问题:


'希望这有帮助,

我得到了LiveDataFeedModuleConfiguration,这不是问题所在。问题是,我没有得到正确的对象类型,当我首先序列化时,我存储在字典中。JavaSriptSerializer只能处理字符串或对象类型的字典键。它似乎不起作用,因为它在反序列化到我的VendorID枚举时遇到了麻烦。不过,谢谢你的建议,看来你在这方面并没有太大成功。您可能需要从头开始创建此功能,或者避免使用字典,并完全避免此问题。当你有空的时候,请发回来solution@Idogorman事实上,我确信大多数.Net JSON序列化程序库处理动态的能力非常差。我决定逐个序列化每个POCO,而不是将它们存储在动态字典中。