Tag: 反序列化

Json.NET区分大小写的反序列化

是否可以指定一些反序列化选项来使用Json.NET执行区分大小写的反序列化? 建议: public class Account { public string Email { get; set; } public bool Active { get; set; } public DateTime CreatedDate { get; set; } public IList Roles { get; set; } } 从反序列化时必须失败: { “email”: “james@example.com”, “active”: true, “createdDate”: “2013-01-20T00:00:00Z”, “roles”: [ “User”, “Admin” ] }

将字符串转换为变量名称

我有一个XML文件,我有一个节点,我读了所有ChildNodes。 childNode的名称与我必须使用此childNode的值设置的变量匹配。 在循环中,我想设置: myvar1到MyValue1 myvar2到MyValue2 C#代码: protected string myvar1; protected string myvar2; XML内容如下所示: MyValue1 MyValue2 C#设置变量: foreach (var item in xmlParamInstallation.SelectNodes(“parameters”)[0].ChildNodes) { ?????? } 任何的想法 ? 谢谢, 更新1:循环中的值“field”始终为null。 public class ParametersTest { public string myvar1 { get; set; } public string myvar2 {get; set;} } var type = typeof(ParametersTest); foreach (XmlNode item in xmlParamInstallation.SelectNodes(“parameters”)[0].ChildNodes) { […]

如何使用json.NET反序列化动态命名的根节点

这是json文件的一个示例: { “John Smith”: { “id”: “72389”, “email”: “johnsmith@gmail.com”, “books”: [ { “id”: “0”, “title”: “The Hunger Games”, “rating”: “5” }, { “id”: “1”, “title”: “Harry Potter and the Order of the Phoenix”, “rating”: “3” }, ], “magazines”: [ { “id”: “2”, “title”: “National Geographic”, “rating”: “1” }, { “id”: “3”, “title”: “Wired”, “rating”: “4” […]

更改类的名称空间后无法使用binaryFormatter反序列化

更改我的类的命名空间后,我不能再反序列化对象。 我已经实现了SerializationBinder 。 例: public class TypeNameConverter : SerializationBinder { public override Type BindToType(string assemblyName, string typeName) { typeName = typeName.Replace(“MyOldNamespace”, “MyNewNamespace”); return Type.GetType(string.Format(“{0}, {1}”, typeName, assemblyName)); } } BinaryFormatter bf = new BinaryFormatter(); bf.Binder = new TypeNameConverter(); 我得到的例外是: ‘System.Runtime.Serialization.TypeLoadExceptionHolder’无法转换为’MyNewNamespace.MyClass’类型

使用Json.NET反序列化键值对的数组

鉴于以下json: [ {“id”:”123″, … “data”:[{“key1″:”val1”}, {“key2″:”val2”}], …}, … ] 这是一个更大的树的一部分,我如何将“数据”属性反序列化为: List Data { get; set; } 要么 List Data { get; set; } 要么 Dictionary Data { get; set; } 使用Json.NET? 两个版本都可以(我更喜欢List of MyCustomClass)。 我已经有一个包含其他属性的类,如下所示: public class SomeData { [JsonProperty(“_id”)] public string Id { get; set; } … public List Data { get; set; } […]

C#反序列化动态JSON

我有以下需要反序列化的Json字符串。 {“123456789”: {“short_description”:”Delivered”, “detail_description”:”Your item has been delivered” } } 第一个字段“123456789”是一个id号,所以基本上这个值可能会有所不同,具体取决于被查询的数据。 我在视觉工作室使用C#。 显然,因为第一个字段的值可以更改,所以我不能使用预定义的类来反序列化JSON,因为该字段将用作类名,但字段值与类名不匹配。 有没有办法将其反序列化为某种动态类但仍然访问字段,就好像它是一个预定义的类? 或者有没有办法将其反序列化为预定义的类,即使类名不匹配? 提供此数据的服务是第三方服务,因此我无法控制它。

将JSON对象反序列化为C#列表

我正在尝试使用Bill Reiss的教程在C#中反序列化给定的JSON文件。 对于非列表中的XML数据,此方法非常有效,但我希望使用以下结构反序列化JSON文件: public class Data { public string Att1 { get; set; } public string Att2 { get; set; } public string Att3 { get; set; } public string Att4 { get; set; } } public class RootObject { public List Listname { get; set; } } 我的问题是使用JSON.Net创建/将数据放入列表,然后在XAML页面上显示列表的能力。 到目前为止我的想法(这是行不通的): var resp = await client.DoRequestJsonAsync(“URL”); […]

JSON.NET使用Type参数反序列化为对象

我有以下问题,我无法解决: 我有不同的类,它们都实现了一个名为IProtocol的接口。 目前,它们被命名为SimpleProtocol , ParallelProtocol 。 我想坚持这些对象,所以我使用了JSON.NET,一切正常。 除非我试图反序列化它们,当我知道它们应该是什么类型时,它会完美地工作,例如: SimpleProtocol p = JsonConvert.DeserializeObject(myJsonData); 但是,我现在处于这样一种情况:我想加载JSON数据并获得IProtocol ,但这是可以理解的,JSON不允许这样做; 例如,这样的东西不起作用: IProtocol p1 = JsonConvert.DeserializeObject(myJsonData); // does not work IProtocol p2 = (IProtocol)JsonConvert.DeserializeObject(myJsonData); // also, does not work 所以,查找API我发现了这个方法签名: public static Object DeserializeObject( string value, Type type ) 看起来就像我需要的东西,所以通过在字符串中保存类型并检索它来尝试: // test Type protocolType = Type.GetType(“MyApp.Protocols.SimpleProtocol”); IProtocol p1 = JsonConvert.DeserializeObject(myJsonData, protocolType); 我得到一个错误,就是不可能将Newtonsoft.Json.Linq.JObject […]

如何在C#中反序列化包含多种类型元素的XML数组

我正在尝试反序列化以下文件: Wayne Stamkos 23 34 Sidney Lindros 41 44 Martin Roy 15 12 Paul Forsberg 21 51 Roberto Rinne 18 23 使用以下代码: namespace ConsoleApplication2 { [XmlRoot(“league”)] public class League { [XmlArray(“players”)] [XmlArrayItem(“skater”)] public List skaters { get; set; } [XmlArrayItem(“goalie”)] public List goalies { get; set; } } public class Skater { [XmlElement(“name”)] public string […]

如何在来自HttpWebResponse的c#windows应用程序中的dataGridView中显示Json DATA

json数据,我来自HTTPWebResponse [{ “testId”:1, “测试名”: “HTML”, “MinScore是”:20, “得分”:40, “日期”: “2014年12月2日”, “状态”: “通过”},{ “testId”:1, “测试名”: “JAVA”, “MinScore是”:20, “分数”:10, “日期”: “2014年12月2日”, “状态”: “FAILED”}] HttpResponseMessage Response = await client.PostAsync(“http://motivtechindia.com/quiz/ws/empquizs”, content); int statusCode = (int)Response.StatusCode; string results = await Response.Content.ReadAsStringAsync(); MessageBox.Show(results);`enter code here` ___________________________________________________________________________________________消息框显示: [{ “testId”:1, “测试名”: “HTML”, “MinScore是”:20, “得分”:40, “日期”: “2014年12月2日”, “状态”: “通过”},{ “testId”:1, “测试名”: “JAVA”, “MinScore是”:20, “分数”:10, “日期”: […]