Tag: deserialization

WebAPI 2.0 Post未反序列化List 属性

我已经回顾了我在这里可以找到的所有类似的文章,并尝试了任何看起来可能没有成功的事情(因为我现在正在问这个问题)。 我有一个带有POST操作的webAPI 2.0控制器,它接受一个类型为Reservation的对象。 除其他外,该对象包含名为Items的属性,该属性属于EquipmentItems类型。 可以想象,这是一个List属性。 我发送预订对象(使用PostAsJsonAsync(“api/Reservation”, reservation).Result如果它对任何人PostAsJsonAsync(“api/Reservation”, reservation).Result重要)。 当我进入API控制器时, Reservation对象完全填充了除EquipmentItems属性之外的所有内容。 本着完全公开的精神, Reservation类中的Items属性实际上被定义为List,其中T是IItemData接口。 EquimpentIteminheritance自IItemData ,因此不确定这是否会使问题复杂化。 本机控制器反序列化器可以不处理T是接口的List吗? 我所知道的是将List定义为常规数组。 这非常有效,但我有其他要求导致我使用List。 有关如何正确反序列化List属性的任何建议?

JSON.NET Deserealization

我有下一个JSON回调: { “id”:”1″, “jsonrpc”:”2.0″, “result”:{ “articles”:[ { “date”:1367582340000, “id”:6917, “title”:”Some Title”, “author”:”Name Surname”, “event_date”:1367584560000, “text”:”blabla” } ] } } 我想使用JSON.NET反序列化它 我写了下一个代码: class News { private string jsonrpc; private string id; private Result result; [JsonProperty(“jsonrpc”)] public string Jsonrpc { get { return jsonrpc; } set { jsonrpc = value; } } [JsonProperty(“id”)] public string Id { […]

Xml反序列化 – 将两个元素合并为一个List 对象

我有一个XML文档,并使用反序列化,有没有办法将两个元素组合成一个对象? XML示例: 3 4 我想创建一个包含项目3和4的列表(类型为Parameter)。 我尝试过使用XmlArrayItem,例如: [XmlArrayItem(“Parameter1”)] [XmlArrayItem(“Parameter2”)] [XmlArray] public Parameter[] Parameters; // have also tried this as public List Parameters = new List(); 我尝试过使用XmlElements(但我无法弄清楚如何将它们组合起来): [XmlElement(“Parameter1”)] public List Parameters = new List(); 有没有办法做到这一点,而不只是创建两个单独的列表,并在以后组合它们? 请注意,更改XML格式不是一种选择。

C#Google.ProtocolBuffers反序列化方法(proto3)

我最近升级了我的代码库(Java,C ++和C#)以使用proto3。 在C#的情况下,这涉及对代码的2000多次更改。 这主要是语义的,都很好,但有一个问题我似乎无法理解; 序列化/反序列化。 我有以下修改的方法去解除我的IMessage类型(在proto2中执行此操作的代码被注释),这是在GitHub存储库中的示例中显示的代码… public static T ToObject(this byte[] buf) where T : IMessage { if (buf == null) return default(T); using (MemoryStream ms = new MemoryStream()) { ms.Write(buf, 0, buf.Length); ms.Seek(0, SeekOrigin.Begin); MessageParser parser = new MessageParser(); return (T)parser.ParseFrom(ms); //ProtoBuf.Serializer.Deserialize(ms); } } 但是MessageParser parser = new MessageParser();行MessageParser parser = new MessageParser(); 给我一个设计/编译时错误 […]

在没有唯一属性名称的情况下反序列化JSON

我有一个json字符串,如下所示 { “1ST”: { “name”: “One”, “symbol”: “1st” }, “2ND”: { “name”: “Two”, “symbol”: “2nd” } } 我试图将其序列化为C#对象。 看起来它正在创建一个Dictionary,所以我创建了以下结构 public class Response { public Dictionary Objects { get; set; } } public class Item { public string name { get; set; } public string symbol { get; set; } } 并且在序列化期间运行以下内容 response = JsonConvert.DeserializeObject(jsonString); 它不会在反序列化时抛出错误,但我的响应只是返回null。 […]

在Mono中反序列化JSON数据

使用Monodroid时,有一种简单的方法可以将简单的JSON字符串反序列化为.NET对象吗? System.Json只提供序列化(没有反序列化),我尝试过的各种第三方库都会导致Mono / Monodroid出现问题。 谢谢。

无法在C#中反序列化JSON结果。 输入字符串格式错误不正确

我试图将json输出反序列化为C#对象。 JSON结果: {“order”:{“commission”:3.490000,”cost”:4.490000,”duration”:”day”,”extended_hours “:false,”fees”:0.000000,”class”:”equity”,”price”:1.000000,”quantity”:1.000000,”r equest_date”:”2013-11-26T09:43:17.118Z”,”result”:true,”side”:”buy”,”status”:”ok” ,”symbol”:”DIS”,”type”:”limit”}} 我从JSON派生的类: public class Rootobject { public Order Order { get; set; } } public class Order { public float commission { get; set; } public float cost { get; set; } public string duration { get; set; } public bool extended_hours { get; set; } public int fees { […]

使用Newtonsoft Json从流中反序列化多个json对象

我正在为json字符串读取NetworkStream ,然后使用Newtonsoft.Json对其进行反序列 Newtonsoft.Json 。 有时,两个json对象可以在流上同时发送回来并同时读取。 但是Newtonsoft.Json serializer只给了我一个对象。 例如,如果我在流上有以下字符串: {“name”:”John Doe”,”age”:10}{“name”:”Jane Doe”,”age”:10} 如果我反serializer流, serializer将读取整个流,但只提供第一个对象。 有没有办法让serializer只读取流中的第一个对象,然后在循环的下一次迭代中读取下一个对象? 码: public static Person Deserialize(Stream stream) { var Serializer = new JsonSerializer(); var streamReader = new StreamReader(stream, new UTF8Encoding()); return Serializer.Deserialize(new JsonTextReader(streamReader)); } 我无法将其序列化为列表,因为我没有收到json数组。

我可以使用Newtonsoft.Json进行严格的反序列化吗?

我正在使用Newtonsoft.Json来序列化/反序列化对象。 据我所知,如果类没有无参数构造函数,则反序列化无法成功。 例, public class Dog { public string Name; public Dog(string n) { Name = n; } } 对于下面这个类,代码正确生成对象。 Dog dog1 = Newtonsoft.Json.JsonConvert.DeserializeObject(“{\”Name\”:\”Dog1\”}”); 对我来说,令人惊讶的是,它也可以使用以下代码正确生成对象。 Dog dog2 = Newtonsoft.Json.JsonConvert.DeserializeObject(“{\”name\”:\”Dog2\”}”); Dog dog3 = Newtonsoft.Json.JsonConvert.DeserializeObject(“{\”n\”:\”Dog3\”}”); Dog dog4 = Newtonsoft.Json.JsonConvert.DeserializeObject(“{\”N\”:\”Dog4\”}”); 现在我能想到的就是 Json转换器在进行reflection时忽略了区分大小写。 此外,如果它面向构造函数,它用json字符串填充参数(就好像参数名称是json字符串)。 我不确定,但也许这就是他们称之为灵活的原因。 这是我的问题: 如果我的class级是这样的, public class Dog { public string Name; public Dog(string name) { Name […]

使用JsonConvert.DeserializeObject反序列化派生对象列表

我有这个对象 public class ConversationAPI { [JsonProperty(PropertyName = “lU”)] public DateTime LastUpdated { get; set; } [JsonProperty(PropertyName = “m”, TypeNameHandling = TypeNameHandling.All)] public List Messages { get; set; } } 我作为json从API发送,并在我的客户端应用程序中反序列化。 The List Messages property contains either [Serializable] public class Message { [JsonProperty(PropertyName = “t”)] public string Text { get; set; } [JsonProperty(PropertyName = “ty”)] public […]