Tag: deserialization

Json.NET将json字符串和映射属性反序列化或序列化为运行时定义的不同属性名称

我有以下JSON字符串: { “values”: { “details”: { “property1”: “94”, “property2”: “47”, “property3”: “32”, “property4”: 1 }, count: 4 } } 我将把它映射到以下模型: public class Details { public string property1 { get; set; } public string property2 { get; set; } public string property3 { get; set; } public int property4 { get; set; } } public class […]

使用Json.NET使用新的部分JSON数据修改现有对象

考虑下面的示例程序 var calendar = new Calendar { Id = 42, CoffeeProvider = “Espresso2000”, Meetings = new[] { new Meeting { Location = “Room1”, From = DateTimeOffset.Parse(“2014-01-01T00:00:00Z”), To = DateTimeOffset.Parse(“2014-01-01T01:00:00Z”) }, new Meeting { Location = “Room2”, From = DateTimeOffset.Parse(“2014-01-01T02:00:00Z”), To = DateTimeOffset.Parse(“2014-01-01T03:00:00Z”) }, } }; var patch = @”{ ‘coffeeprovider’: null, ‘meetings’: [ { ‘location’: […]

json从遗留属性名称反序列化

如何设置Newtonsoft.Json以使用旧成员名称反序列化对象,但使用当前成员名称对其进行序列化? 这是一个需要序列化和反序列化的示例对象。 我给了一个属性属性,其中包含过去可能已经序列化的名称列表。 [DataContract] class TestObject { [LegacyDataMemberNames(“alpha”, “omega”)] [DataMember(Name = “a”)] public int A { get; set; } } 我想json序列化始终使用名称“a”,但能够从任何遗留名称反序列化为一个属性,包括“alpha”和“omega”以及当前名称“a”

反序列化DataTable后,DateTime列类型变为String类型

我有一个DataTable有两列。 ShipmentDate(DateTime)和Count(Int)。 在我反序列化字符串后,我注意到如果第一个itemarray值为null,ShipmentDate的类型就变成了字符串。 请查看以下示例。 除第一个数组项外,json字符串都有相同的数据。 string jsonTable1 = “[{\”ShipmentDate\”:null,\”Count\”:3},{\”ShipmentDate\”:\”2015-05-13T00:00:00\”,\”Count\”:13},{\”ShipmentDate\”:\”2015-05-19T00:00:00\”,\”Count\”:1},{\”ShipmentDate\”:\”2015-05-26T00:00:00\”,\”Count\”:1},{\”ShipmentDate\”:\”2015-05-28T00:00:00\”,\”Count\”:2}]”; string jsonTable2 = “[{\”ShipmentDate\”:\”2015-05-13T00:00:00\”,\”Count\”:13},{\”ShipmentDate\”:null,\”Count\”:3},{\”ShipmentDate\”:\”2015-05-19T00:00:00\”,\”Count\”:1},{\”ShipmentDate\”:\”2015-05-26T00:00:00\”,\”Count\”:1},{\”ShipmentDate\”:\”2015-05-28T00:00:00\”,\”Count\”:2}]”; DataTable tbl1 = Newtonsoft.Json.JsonConvert.DeserializeObject(jsonTable1); DataTable tbl2 = Newtonsoft.Json.JsonConvert.DeserializeObject(jsonTable2); Console.WriteLine(tbl1.Columns[“ShipmentDate”].DataType); Console.WriteLine(tbl2.Columns[“ShipmentDate”].DataType); 在我的场景中,第一个项目数组的ShipmentDate可以为null,并通过将其转换为字符串类型来创建问题。 我有一种情况,数据表的模式是动态的。 我不能创建强类型的类。

将嵌套的JSON反序列化为C#对象

我从一个看起来像这样的API获取JSON: { “Items”: { “Item322A”: [{ “prop1”: “string”, “prop2”: “string”, “prop3”: 1, “prop4”: false },{ “prop1”: “string”, “prop2”: “string”, “prop3”: 0, “prop4”: false }], “Item2B”: [{ “prop1”: “string”, “prop2”: “string”, “prop3”: 14, “prop4”: true }] }, “Errors”: [“String”] } 我已经尝试了一些方法来在c#对象中表示这个JSON(这里列出的太多了)。 我已尝试使用列表和词典,这是我最近尝试如何表示它的示例: private class Response { public Item Items { get; set; } public string[] Errors […]