简介 :如何使用JavaScriptSerializer.Deserialize将JSON数据中的字段名称映射到.Net对象的字段名称? 更长的版本 :我有以下JSON数据来自我的服务器API(不用.Net编码) {"user_id":1234, "detail_level":"low"} 我有以下的C#对象: [Serializable] public class DataObject { [XmlElement("user_id")] public int UserId { get; set; } [XmlElement("detail_level")] public DetailLevel DetailLevel { get; set; } } 其中DetailLevel是具有“Low”作为其中一个值的枚举。 此testing失败: [TestMethod] public void DataObjectSimpleParseTest() { JavaScriptSerializer serializer = new JavaScriptSerializer(); DataObject dataObject = serializer.Deserialize<DataObject>(JsonData); Assert.IsNotNull(dataObject); Assert.AreEqual(DetailLevel.Low, dataObject.DetailLevel); Assert.AreEqual(1234, dataObject.UserId); } 最后两个断言失败,因为这些字段中没有数据。 如果我将JSON数据更改为 {"userid":1234, "detaillevel":"low"} […]
在.NET世界中,当谈到对象序列化时,通常会在运行时检查对象的字段和属性。 在处理大量对象时,使用reflection来处理这个工作通常是很慢的,是不可取的。 另一种方式是使用IL发射或构buildperformance树,从而提供显着的性能增益而不是reflection。 而后者是现代图书馆在处理序列化时select的。 但是,在运行时构build和发布IL需要时间,只有将这些信息caching并重新用于相同types的对象时,投资才会被偿还。 当使用Json.NET时,我不清楚上面使用了哪种方法,如果后者确实使用,是否使用caching。 例如,当我这样做时: JsonConvert.SerializeObject(new Foo { value = 1 }); Json.NET是否构build了Foo的成员访问信息和caching以供以后重用?
我已经创build了下一个词典: var postJSON = [ids[0]:answersArray[0], ids[1]:answersArray[1], ids[2]:answersArray[2]] as Dictionary 我得到: [2: B, 1: A, 3: C] 那么,我怎样才能把它转换成JSON呢?
我们大量地使用序列化,并且不得不在每个我们使用的对象上指定Serializable标签都是一种负担。 尤其是当我们不能真正改变的第三方课堂。 问题是:由于Serializable是一个空接口,并且一旦添加了implements Serializable ,Java就提供了健壮的序列implements Serializable – 为什么它们没有使所有的东西都可序列化呢?就是这样呢? 我错过了什么?
Java中的Serializable和Externalizable什么区别?
扩展我以前的问题 ,我已经决定(德)序列化我的configuration文件类效果很好。 我现在想要存储驱动器号映射(关键是驱动器号,值是networkingpath)的关联数组,并尝试使用Dictionary , HybridDictionary和Hashtable为此但调用ConfigFile.Load()时我总是得到以下错误ConfigFile.Load()或ConfigFile.Save() : 反映types“App.ConfigFile”的错误。 [snip] System.NotSupportedException:无法序列化成员App.Configfile.mappedDrives [snip] 从我读的字典和HashTables可以序列化,所以我做错了什么? [XmlRoot(ElementName="Config")] public class ConfigFile { public String guiPath { get; set; } public string configPath { get; set; } public Dictionary<string, string> mappedDrives = new Dictionary<string, string>(); public Boolean Save(String filename) { using(var filestream = File.Open(filename, FileMode.OpenOrCreate,FileAccess.ReadWrite)) { try { var serializer = new […]
我使用Python 2从ASCII编码的文本文件中parsingJSON。 当用json或simplejson加载这些文件时,我所有的string值都被转换为Unicode对象而不是string对象。 问题是,我必须使用一些只接受string对象的库的数据。 我不能更改库或更新它们。 是否有可能获得string对象而不是Unicode的? 例 >>> import json >>> original_list = ['a', 'b'] >>> json_list = json.dumps(original_list) >>> json_list '["a", "b"]' >>> new_list = json.loads(json_list) >>> new_list [u'a', u'b'] # I want these to be of type `str`, not `unicode` 更新 很久以前,当我被Python 2困住时,这个问题被问到了 。 今天一个简单而干净的解决scheme就是使用Python的最新版本 – 即Python 3和forward。
我使用ServiceStack序列化和反序列化一些对象到JSON。 考虑这个例子: public class Container { public Animal Animal { get; set; } } public class Animal { } public class Dog : Animal { public void Speak() { Console.WriteLine("Woof!"); } } var container = new Container { Animal = new Dog() }; var json = JsonSerializer.SerializeToString(container); var container2 = JsonSerializer.DeserializeFromString<Container>(json); ((Dog)container.Animal).Speak(); //Works ((Dog)container2.Animal).Speak(); //InvalidCastException […]
我有一个需要序列化并通过套接字连接进行传输的小对象层次结构。 我需要序列化对象,然后根据它是什么types反序列化它。 有没有一种简单的方法来做到这一点在C + +(如在Java中)? 有没有任何C ++序列化在线代码示例或教程? 编辑:只是要清楚,我正在寻找将对象转换为字节数组,然后回到对象的方法。 我可以处理套接字传输。
我尝试序列化从实体数据模型.edmx自动生成的POCO类,当我使用 JsonConvert.SerializeObject 我得到了以下错误: 错误发生System.data.entitytypes检测到的自回参考循环。 我如何解决这个问题?