草庐IT

Pickle反序列化

全部标签

c# - Dictionary<Key, Value> 上 .NET 二进制序列化的奇怪行为

我在.NET的二进制序列化中遇到了一个奇怪的行为,至少符合我的预期。在OnDeserialization回调之后,加载的Dictionary的所有项目都被添加到它们的父级。相比之下,List则采用另一种方式。这在现实世界的存储库代码中可能真的很烦人,例如,当您需要向字典项添加一些委托(delegate)时。请检查示例代码并观察断言。这是正常行为吗?[Serializable]publicclassData:IDeserializationCallback{publicListList{get;set;}publicDictionaryDictionary{get;set;}public

c# - 为什么 Web API 不反序列化这个但 JSON.Net 会反序列化?

WebAPI如何无法反序列化JSON.Net反序列化的对象?这是WebAPIController:publicvoidPut(EditorSubmissionMainViewajaxSubmission){//ajaxSubmission:EditorSubmissionMainViewwithallvalues('data'also==null)stringjson="{\"id\":\"row_1377\",\"data\":{\"ROTATION\":\"1\",\"EQUIPMENT\":[{\"id\":\"6\"},{\"id\":\"8\"}],\"NOTES\":\"\

c# - Json.NET 在返回 json 序列化字符串时添加反斜杠

我正在尝试使用Json.NET将列表序列化为json字符串,但返回的字符串中有反斜杠,这又导致json解析失败。varx=fromdinentities.Books.ToList()selectnew{ID=d.ID,BookName=d.BookName};returnJsonConvert.SerializeObject(x.ToList());以上代码返回"[{\"ID\":1,\"BookName\":\"MVCMusicStore-Tutorial-v3.0\"},{\"ID\":2,\"BookName\":\"Pro.ASP.NET.MVC.3.Framework\"},

c# - 将 JSON 反序列化为 IDictionary<string,object>

这个问题在这里已经有了答案:HowdoIuseJSON.NETtodeserializeintonested/recursiveDictionaryandList?(5个答案)关闭7年前。我正在尝试将一些旧作品转换为使用NewtonsoftJSON.NET。使用System.Web.Script.Serialization.JavaScriptSerializer.Deserialize的默认处理方法(例如,如果未指定目标类型)是返回一个Dictionary用于内部对象。这实际上是JSON的一个非常有用的基本类型,因为它也恰好是ExpandoObjects使用的基础类型。并且是动态类型

c# - json.net 不序列化派生类的属性

我正在使用JSON.NET6.0.1。当我使用SerializeObject方法序列化派生类的对象时,它仅序列化基类的属性。这是代码片段:stringv=JsonConvert.SerializeObject(service,Formatting.Indented,newJsonSerializerSettings(){TypeNameHandling=TypeNameHandling.All});基类:[DataContract]publicabstractpartialclassDataEntity:IDataEntity,INotifyPropertyChanging,INoti

c# - 在 C# 中反序列化 JSON 数组(或列表)

基本代码如下:publicstaticstringDeserializeNames(){jsonData="{\"name\":[{\"last\":\"Smith\"},{\"last\":\"Doe\"}]}";JavaScriptSerializerser=newJavaScriptSerializer();nameListmyNames=ser.Deserialize(jsonData);returnser.Serialize(myNames);}//Classdescriptionspublicclassname{publicstringlast{get;set;}}publ

c# - 使用 Newtonsoft JSON.NET 反序列化动态 Json 字符串

我有一个从FacebookAPI获取的JSON字符串,其中我有一个节点,其名称根据其内容而变化,例如有时是45或58等。它可以是任何数字。我想要它的值(value)。如何获得?示例:{"data":[{"id":"1492292372_10201810786059989","created_time":"2014-04-05T09:00:54+0000"},{"id":"1492292372_10201804679827337","created_time":"2014-04-04T07:29:07+0000"},{"id":"1492292372_10201804649306574"

c# - Json.net 反序列化列表给出重复项

我刚刚开始使用Newtonsoft.Json(Json.net)。在我的第一个简单测试中,我在反序列化通用列表时遇到了问题。在下面的代码示例中,我序列化了一个对象,其中包含三种类型的简单整数列表(属性、成员变量和数组)。生成的json看起来不错(列表被转换为json数组)。但是,当我将json反序列化回相同类型的新对象时,所有列表项都会重复,数组除外。我已经通过第二次序列化来说明这一点。通过四处搜索,我读到反序列化器也填充的列表可能有一个“私有(private)”支持字段。所以我的问题是:在以下情况下是否有一种(最好是简单的)方法来避免重复项?代码usingSystem;usingSy

c# - 更改 WCF 中的默认日期序列化

有没有办法更改WCF中DateTime的默认JSON序列化/反序列化?目前,DateTime被序列化为/Date(1372252162657+0200)/格式,这应该没问题,但当我的服务器不在UTC时(我不能改变)。此服务正在处理的所有日期/时间数据均采用UTC格式。当服务器处于UTC时,一切正常。但是,staging/prod环境设置为GMT+1(巴黎)并且序列化程序假定日期/时间为GMT+1,完全忽略属性Kind。因此,正如您所期望的那样,调用DateTime.SetKind()并将其设置为UTC将不起作用。实际上,序列化时间延迟了一个小时。我可以进行双向日期对话(它在反序列化时也

c# - 如何忽略二进制序列化的事件类成员?

我需要避免序列化Event类成员,因为当事件由未标记为可序列化的对象处理时,序列化将失败。我尝试在Event类成员上使用NonSerialized属性,但编译失败。这行代码:PublicEventPropertyValueChanged()产生以下错误:Attribute'NonSerializedAttribute'cannotbeappliedto'PropertyValueChanged'becausetheattributeisnotvalidonthisdeclarationtype.PublicEventPropertyValueChanged()'compilesbutn