Tag: 序列化

我可以在.NET 4中序列化ExpandoObject吗?

我正在尝试使用System.Dynamic.ExpandoObject因此我可以在运行时动态创建属性。 稍后,我需要传递此对象的实例,并且使用的机制需要序列化。 当然,当我尝试序列化我的动态对象时,我得到了exception: System.Runtime.Serialization.SerializationException未处理。 在Assembly’System.Core中输入’System.Dynamic.ExpandoObject’,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089’未标记为可序列化。 我可以序列化ExpandoObject吗? 是否有另一种方法来创建可序列化的动态对象? 也许使用DynamicObject包装器? 我创建了一个非常简单的Windows窗体示例来复制错误: using System; using System.Windows.Forms; using System.IO; using System.Runtime.Serialization; using System.Runtime.Serialization.Formatters.Binary; using System.Dynamic; namespace DynamicTest { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { dynamic dynamicContext = new ExpandoObject(); dynamicContext.Greeting […]

如何序列化/反序列化从另一个程序集加载的对象?

我想序列化/反序列化已由从程序集加载的另一个对象实例化的对象: Interfaces.cs(来自引用的程序集,Interfaces.dll) public interface ISomeInterface { ISettings Settings { get; set; } } public interface ISettings : ISerializable { DateTime StartDate { get; } } SomeClass.cs(来自引用的程序集,SomeClass.dll) public class SomeClass : ISomeInterface { private MySettings settings = new Settings(); public ISettings Settings { get { return (ISettings)settings; } set { settings = value as MySettings; } […]

如何在MVC4中将Json字符串输出为JsonResult?

这似乎很简单,我必须过度思考它。 TL; DR; 如何修改下面的代码以返回包含在字符串中的json对象而不是恰好包含json的字符串? public ActionResult Test() { var json_string = “{ success: \”true\” }”; return Json(json_string, JsonRequestBehavior.AllowGet); } 此代码返回包含json的字符串文字: “{ success: “true” }” 但是,我希望它返回字符串中包含的json: { success: “true” } 版本略长 我正在尝试快速原型化一些外部api调用,并且只想通过我的“api”将这些结果作为现在的假响应传递。 json对象是非平凡的 – 大约10,000“行”或90KB。 我不想为这个json响应的所有内容创建一个强类型对象,因此我可以通过反序列化器运行它 – 这样就可以了。 所以我控制器的基本逻辑是: 调用externall api 将Web请求的字符串结果存储到var中(参见上面的json_string) 使用JsonResult生成方法Json()将这些结果输出为json(不是字符串) 非常感谢任何帮助……心灵正在融化。

使用XmlSerializer序列化整数数组

我正在尝试通过XmlSerializer为我正在研究的XNA项目序列化一个多维的整数数组时遇到问题。 我可以毫不费力地序列化我的所有其他数据(布尔,字符串,甚至颜色等)。 我也看到很多人声称XmlSerializer本身也会处理(单维)整数数组。 是否有关于多维数组的限制,或者是否还有其他问题? 这是相关的代码: int[,,] scoredata = scores; // Populated with data elsewhere filename = Path.Combine(container.Path, “scoredata.sav”); stream = File.Open(filename, FileMode.Create); serializer = new XmlSerializer(typeof(int[,,])); serializer.Serialize(stream, scoredata); // This line throws the exception. stream.Close(); 我收到的exception是“System.Xml.dll中发生类型’System.InvalidOperationException’的未处理exception。生成XML文档时出错。” 我也尝试将这个数组用作结构中的成员变量(我存储了所有其他玩家数据),但是当我这样做的时候我得到同样的exception,这让我相信它不是简单的语法错误或类似的东西。 我是否需要重新构建我的代码以通过单维数组进行序列化,或者我有什么东西可以忽略? 提前致谢!

使用NewtonSoft.JSON序列化接口/抽象对象

反序列化接口和抽象属性的一种方法是通过在序列化和反序列化期间将TypeNameHandling设置为Auto来实现。 但是,当我在直接序列化和反序列化接口对象时尝试相同的操作时,它不起作用 – interface ISample { string Key { get; set; } } class A : ISample { public string Key { get; set; } public A(string key) { this.Key = key; } } class B : ISample { public string Key { get; set; } public B(string key) { this.Key = key; } } […]

如何使用非标准(和变化的)属性名称反序列化JSON(在.NET中)

我必须读取一个JSON流(我无法控制),其forms如下: {“files”: { “/some_file_path.ext”: {“size”:”1000″, “data”:”xxx”, “data2″:”yyy”}, “/other_file_path.ext”: {“size”:”2000″, “data”:”xxx”, “data2″:”yyy”}, “/another_file_path.ext”: {“size”:”3000″, “data”:”xxx”, “data2″:”yyy”}, } } 所以,我有一个名为files的对象,它有许多属性,每次都有1)不同的名称,2)每次都有不同的数量,3)具有不能在C#属性中使用的字符的名称。 我该如何反序列化? 我把它放到一个可移植的库中,所以我不能在System.Web.Script.Serialization中使用JavaScriptSerializer,而且我不确定JSON.NET。 我希望使用标准的DataContractJsonSerializer。 更新:我已经将示例数据更改为更接近实际数据,并更正了不重要的区域中的JSON语法。 (仍然简化了很多,但其他部分相当标准)

JSON.NET序列化空JSON

我使用MetadataType为以下类型定义Json.NET属性,然后在其ToString()方法中使用Json.NET对其进行序列化: namespace ConsoleApp1 { public interface ICell { int Id { get; } } public interface IEukaryote { System.Collections.Generic.IEnumerable Cells { get; } string GenericName { get; } } public sealed partial class PlantCell : ICell { public int Id => 12324; } public sealed partial class Plant : IEukaryote { private readonly System.Collections.Generic.IDictionary _valuesDict; […]

使用XmlSerializer反序列化List 导致额外的项目

我注意到XmlSerializer和generics列表(特别是List )的奇怪行为。 我想知道是否有人以前见过这个或知道发生了什么。 看起来好像序列化工作正常,但反序列化想要在列表中添加额外的项目。 下面的代码演示了这个问题。 可序列化类: public class ListTest { public int[] Array { get; set; } public List List { get; set; } public ListTest() { Array = new[] {1, 2, 3, 4}; List = new List(Array); } } 测试代码: ListTest listTest = new ListTest(); Debug.WriteLine(“Initial Array: {0}”, (object)String.Join(“, “, listTest.Array)); Debug.WriteLine(“Initial List: {0}”, […]

在C#中使用空元素反序列化Xml

尝试将某些xml snippit从供应商反序列化为对象。 问题是我在每个empy元素标签上获得的格式无效。 当所有元素都有值时,我可以反复排序对象没问题。 或者省略空元素。 Xml Snippit: 1 C#类: [Serialilbe()] public class foo { public foo(){} [XmlElementAttribute(IsNullable = true)] public int? propOne {get;set;} [XmlElementAttribute(IsNullable = true)] public int? propTwo {get;set;} } 我可以通过类来设置调整解析吗? 要么 有没有一种简单的方法可以应用xsl来删除这些元素? 要么 我应该使用regEx来删除空元素吗? 要么 一个更好的方法?

如何使用包含“原始”JSON的字符串成员序列化和反序列化类型,而无需在进程中转义JSON

我想将JSON反序列化为Object但我不想反序列化嵌套的JSON,嵌套的嵌套JSON应转换为JSON列表(请检查“ 我的预期输出 ”以获得清晰的想法)… //假设我有以下JSON数据,这里我有“地址”实体的嵌套JSON String jsonEmployees = “{“Employees”: [{“EmpId”:1, “EmpName”:”ABC”, “Address”:[{“AddressId”:1, “Address”:”Something”},{“AddressId”:2, “Address”:”Anything”}]}, {“EmpId”:2, “EmpName”:”XYZ”, “Address”:[{“AddressId”:1, “Address”:”Something”},{“AddressId”:2, “Address”:”Anything”}]}] }” public class Employee { public int EmpId { get; set; } public string EmpName { get; set; } // **Note** : I’m not using List data type for Address, instead of I want list of address […]