Tag: 序列化

序列化没有根元素的数组

我正在尝试在序列化XML时获得此结果 C:\test.txt 1 2 4 5 我已经尝试过不同的东西 [Serializable] [XmlRoot(“Test”)] public class Test { [XmlElement(“Category”)] public List Category= new List(); } [Serializable] [XmlRoot(“Category”)] public class Category { [XmlElement(“FileName”)] public string FileName { get; set; } [XmlElement(“Property”)] public List Properties = new List(); } [Serializable] public class Property { public string Prop1 { get; set; } public […]

C#Serialize Dictionary 为JSON

我试图将Dictionary序列化为JSON,并获得以下exception: new JavaScriptSerializer().Serialize(mydict)` 输入’System.Collections.Generic.Dictionary`2 [[System.UInt64,mscorlib,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089],[System.Nullable`1 [[System.UInt64,mscorlib,Version =字典的序列化/反序列化不支持2.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089]],mscorlib,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089]]’,键必须是字符串或对象。 是否有捷径可寻? 也许通过LINQ或者相对简洁的东西将ulongs转换为字符串?

在C#程序中反序列化JSON时,我是否需要使用除JavaScriptSerializer之外的任何东西?

.NET在System.Web.Script.Serialization命名空间中提供JavaScriptSerializer类。 (在System.Web.Extensions.dll中提供) 它最初旨在支持AJAX Web服务器应用程序,但该类可以被任何应用程序(客户端,服务器,混合,任何)使用,它们将.NET类序列化和反序列化为JSON。 我有一个桌面应用程序,可以捕获屏幕截图并上传到Facebook,并使用此类来反序列化响应。 我是否想在其他地方寻找.NET内的JSON反序列化? 如果是这样,为什么? 我会在哪里看? 如果没有,那为什么JSON.Net存在? 它是否严格用于历史目的? (即,因为它是由JavaScriptSerializer之前的社区创建的)。

通过比较它们的序列化字节数组来比较类的两个实例是否可靠?

给定一个类的两个实例,通过首先对它们进行序列化然后比较字节数组(或者可能是数组的哈希值)来比较它们是一种好的和可靠的做法。 这些对象可能具有复杂的层次结构属性,但序列化应尽可能深入。 相比之下,我指的是确保原始类型的所有属性具有相等值的过程,复杂类型的属性具有基本类型的相同属性等。至于集合属性,它们应该彼此相等:相等的元素,相同的位置: {‘a’,’b’,’c’} != {‘a’,’c’,’b’} {new Customer{Id=2, Name=”abc”}, new Customer {Id=3, Name=”def”}} != {new Customer{Id=3, Name=”def”}, new Customer {Id=2, Name=”abc”}} 但 {new Customer{Id=2, Name=”abc”}, new Customer {Id=3, Name=”def”}} == {new Customer{Id=2, Name=”abc”}, new Customer {Id=3, Name=”def”}} 通过序列化我的意思是标准的.NET二进制格式化程序。 谢谢。

如何在C#MVC Controller操作中将动态对象序列化为JSON?

我想将动态对象序列化为JSON。 我尝试使用ExpandoObject,但结果不是我需要的: public JsonResult Edit() { dynamic o = new ExpandoObject(); ((IDictionary)o)[“abc”] = “ABC”; //or o.abc = “ABC”; return Json(o); } 我希望JSON看起来像:{“abc”:“ABC”}但它看起来像[{“Key”:“abc”,“Value”:“ABC”}]显然ExpandoObject不会这样做,但我可以inheritance从DynamicObject以某种方式覆盖其方法来实现我想要的JSON格式?

大型复杂对象作为Web服务结果

你好再次女士们和男士们! 好的,继续我关于ASP.NET Web服务结果,代理类和类型转换的其他问题。 我参与了我的项目,我需要在思考上限。 基本上,我们有一个庞大,复杂的自定义对象,需要从Web服务返回并在客户端应用程序中使用。 现在,基于前面的讨论,我们知道这将采用代理类的forms作为返回类型。 为了克服这个问题,我们需要基本上将属性从一个复制到另一个。 在这种情况下,这是我真的,​​真的, 真的! 喜欢避免! 所以,它让我思考, 我们还能怎么做呢? 我目前的想法是将对象完全序列化为XML,然后将XML作为字符串从Web Service返回。 然后我们在客户端反序列化。 这将意味着相当多的属性装饰,但至少两个端点的代码都很轻,即只使用.NET XML Serializer。 你对此有何看法?

如何读取C#字符串字典并将其写入文件?

我有一个Dictionary对象,我想写入磁盘并能够从磁盘读取它。 理想情况下,我会避免任何第三方库。 使用常规C#4有一种简单的方法吗? 答案接受了。 摘要: 选项1 – 使用JavaScriptSerializer 优点:不需要第三方图书馆。 此外,使用更现代的格式,即JSON 缺点:难以阅读 – 没有形成。 此外,确实需要引用不太常用的System.Web.Extension程序集,即使应用程序与Web无关。 解: 写: File.WriteAllText(“SomeFile.Txt”, new JavaScriptSerializer().Serialize(dictionary)); 读: var dictionary = new JavaScriptSerializer() .Deserialize<Dictionary>(File.ReadAllText(“SomeFile.txt”)); 选项2 – 使用Linq到Xml 优点:不需要第三方图书馆。 通常不需要添加其他引用。 易读。 缺点: XML不像更现代的JSON那样优先。 写: new XElement(“root”, d.Select(kv => new XElement(kv.Key, kv.Value))) .Save(filename, SaveOptions.OmitDuplicateNamespaces); 读: var dictionary = XElement.Parse(File.ReadAllText(filename)) .Elements() .ToDictionary(k => k.Name.ToString(), v => […]

使用C#中的换行符对XML元素进行XML反序列化

我似乎无法弄清楚为什么这个测试没有通过 测试是: 给出以下XML: 1234567890 ABCXYZ 和以下课程: class Foo { [XmlElement(ElementName = “account”, DataType = “normalizedString”)] string account; [XmlElement(ElementName = “deptCode”, DataType = “normalizedString”] string deptCode; } 当该XML反序列化时: XmlSerializer serializer = new XmlSerializer(typeof(Foo)); Foo myFoo = (Foo) serializer.Deserialize(xmlReader); 我得到以下值: Foo.account = “\r\n 1234567890 \r\n” Foo.deptCode = “\r\n ABCXYZ \r\n” 而不是预期的 Foo.account = “1234567890” Foo.deptCode = “ABCXYZ” […]

在反序列化期间找不到构造函数?

给出以下示例: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.Serialization.Formatters.Binary; using System.IO; namespace SerializationTest { [Serializable] class Foo : Dictionary { } class Program { static void Main(string[] args) { Foo foo = new Foo(); foo[1] = “Left”; foo[2] = “Right”; BinaryFormatter formatter = new BinaryFormatter(); MemoryStream stream = new MemoryStream(); formatter.Serialize(stream, foo); stream.Seek(0, […]

序列化/反序列化List 到JSON

我希望能够序列化/反序列化我到目前为止的通用列表 public static string ToJson(this object obj, int recursionDepth = 100) { JavaScriptSerializer serializer = new JavaScriptSerializer(); serializer.RecursionLimit = recursionDepth; return serializer.Serialize(obj); } public static List ToListObject(this string obj, int recursionDepth = 100) { JavaScriptSerializer serializer = new JavaScriptSerializer(); serializer.RecursionLimit = recursionDepth; List returnList = serializer.Deserialize<List>(obj); return returnList; } 我也试过(List)serializer.DeserializeObject(obj) 使用Deserialize它反序列化错误(到一个空的List对象),并且使用DeserializeObject它会抛出一个错误,说’无法将给定的字符串反序列化为T’数组。 而且我无法使用IOStream :(真的会让任何见解变得更好。 更新:即使基本的序列化/反序列化工作,我发布这个不是我的一天。 🙂