serialization相关内容

使用 JSON.NET 序列化对象时如何添加自定义根节点?

我为我的一些对象添加了一个自定义属性,如下所示: [JsonCustomRoot("status")]公共类StatusDTO{公共 int StatusId { 获取;放;}公共字符串名称 { 获取;放;}公共日期时间创建{获取;放;}} 属性很简单: 公共类 JsonCustomRoot :Attribute{公共字符串 rootName { 获取;放;}公共 JsonCustomRoo ..
发布时间:2022-01-11 22:28:35 C#/.NET

如何在没有格式化的情况下序列化 JObject?

我有一个使用 LINQ to JSON 构建的 JObject(我正在使用 Json.Net)(也由同一个库提供).当我在 JObject 上调用 ToString() 方法时,它会将结果输出为格式化的 JSON. 如何将格式设置为“无"? 解决方案 调用JObject的ToString(Formatting.None)方法. 或者,如果您将对象传递给 JsonConvert. ..
发布时间:2022-01-11 22:27:26 其他开发

自定义 JsonConverter WriteJson 不会改变子属性的序列化

我一直觉得 JSON 序列化程序实际上会遍历整个对象的树,并在遇到的每个接口类型对象上执行自定义 JsonConverter 的 WriteJson 函数 - 并非如此. 我有以下类和接口: 公共接口 IAnimal{字符串名称 { 获取;放;}字符串说话();列出孩子{得到;放;}}公共类猫:IAnimal{公共字符串名称 { 获取;放;}公共列表孩子 ..
发布时间:2022-01-11 22:27:08 C#/.NET

覆盖 Json 反序列化带有前导零的数字作为十进制而不是八进制值

我正在生成一个 json 对象, {“号码":0100} 当这个对象在 C# 中使用 Newtonsoft.Json 反序列化时,0100 被视为八进制数,因为前导零.有没有办法覆盖此功能并使其将数字视为十进制整数? 解决方案 我看过 JsonTextReader.ParseNumber() (数字读取的“魔法"发生的方法).我会说这是不可行的.八进制大小写特别处理 bool fla ..
发布时间:2022-01-11 22:25:14 C#/.NET

使用非默认构造函数会破坏 Json.net 中的反序列化顺序

使用 Json.net 反序列化具有父子关系的对象图时,使用非默认构造函数会破坏反序列化的顺序,使得子对象在其父对象之前被反序列化(构造和分配属性),从而导致空引用. 从实验看来,所有非默认构造函数对象仅在所有默认构造函数对象之后才被实例化,奇怪的是,它似乎与序列化的顺序相反(子对象在父对象之前). 这会导致应该引用其父对象(并且已正确序列化)的“子"对象被反序列化为空值. 这似 ..
发布时间:2022-01-11 22:24:51 C#/.NET

如何使 Json.Net 跳过空集合的序列化

我有一个包含多个属性的对象,这些属性是字符串列表List 或字符串字典Dictionary.我想使用 Json.net 将对象序列化为 json,并且希望生成最少的文本. 我正在使用 DefaultValueHandling 和 NullValueHandling 将默认值设置为字符串和整数.但是,如果将 DefaultValueHandling ..
发布时间:2022-01-11 22:22:12 C#/.NET

使用 json.net 在序列化期间合并两个对象?

我遇到了以下情况,有人可以帮我实现以下目标吗? 例如,如果我有课程:- 公共类示例{公共字符串名称 {get;set;}public MyClass myclass {get;set;}} 我的 Myclass 如下: 公共类 MyClass{公共字符串 p1 {get;set;}公共字符串 p2 {get;set;}} 当我使用 Json.net 对 Sample 类的对象进行序列 ..
发布时间:2022-01-11 22:21:44 C#/.NET

Json.net 反序列化 null guid 案例

我正在使用 Json.NET 反序列化一个对象,该对象包含一个 Guid 类型的私有字段和该字段的公共属性.当我的 Guid 在我的 json 中的值为 null 时,我想将 Guid.Empty 分配给我的字段. 公共类 MyClass{私人吉德财产;公共 Guid 财产{获取{返回属性;}放{如果(值 == 空){属性 = Guid.Empty;}别的{财产=价值;}}}} 但是 dese ..
发布时间:2022-01-11 22:21:04 C#/.NET

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

我正在使用 JSON.NET 6.0.1.当我使用 SerializeObject 方法序列化派生类的对象时,它仅序列化基类的属性.以下是代码片段: 字符串 v = JsonConvert.SerializeObject(服务,Formatting.Indented,新的 JsonSerializerSettings(){TypeNameHandling = TypeNameHandling.A ..
发布时间:2022-01-11 22:20:46 C#/.NET

收到错误“无法从 Newtonsoft.Json.Linq.JProperty 添加或删除项目"在 Json.net 中

所以我试图通过将 json 对象作为 JObject 读取,删除一些字段,然后使用 Json.Net.问题是,每当我尝试删除字段时,都会收到错误消息: “Newtonsoft.Json.JsonException"类型的未处理异常发生在 Newtonsoft.Json.dll 附加信息:无法添加或删除项目Newtonsoft.Json.Linq.JProperty. 这是我的(简 ..
发布时间:2022-01-11 22:20:10 C#/.NET

每个请求的 ASP.NET Core API JSON 序列化程序设置

基于请求中的某些值(标头或 url),我想更改我的 DTO 对象的序列化.为什么?好吧,我已将 [JsonProperty("A")] 应用于我的 DTO,但取决于它是否要使用该属性的客户端(网站或移动应用程序).我开始了 服务.AddMvc().AddJsonOptions(opt =>{#如果调试opt.SerializerSettings.ContractResolver = new No ..
发布时间:2022-01-11 22:20:03 C#/.NET

在 Json.net 中序列化一对多关系

我首先使用实体​​框架代码进行数据访问,并且我有一个包含员工集合的公司类.Employee 类也有一个 Company 属性. 我希望能够对 Company 进行序列化,并将员工列表包含在序列化中. 这是公司: 公开课公司{公共长 ID { 获取;放;}公共字符串名称 { 获取;放;}公共日期时间?成立{得到;放;}公共虚拟 IList员工{得到;放;}公共日期时 ..

序列化同一类中的多个 DateTime 属性,每个属性使用不同的格式

我有一个具有两个 DateTime 属性的类.我需要用不同的格式序列化每个属性.我该怎么做?我试过了: JsonConvert.SerializeObject(obj, Formatting.None,新的 IsoDateTimeConverter {DateTimeFormat = "MM.dd.yyyy"}); 此解决方案对我不起作用,因为它将日期格式应用于所有属性.有没有办法用不同的格式 ..
发布时间:2022-01-11 22:06:58 C#/.NET

NewtonSoft.Json 具有 IEnumerable<ISomeInterface> 类型属性的序列化和反序列化类

我正在尝试移动一些代码以使用 ASP.NET MVC Web API 生成的 Json 数据而不是 SOAP Xml. 我在序列化和反序列化以下类型的属性时遇到了问题: IEnumerable. 这是一个简单的例子: 公共接口ISample{int SampleId { 获取;放;}}公共类示例:ISample{公共 int SampleId { 获取;放;}}公共类 SampleGr ..
发布时间:2022-01-11 22:04:36 C#/.NET

如何使用 Json.Net 从我的 WCF 休息服务(.NET 4)返回 json,而不是用引号括起来的字符串?

2010 年 10 月 19 日更新我知道我不久前问过这个问题,但这些答案中显示的解决方法很难令人满意,这仍然是许多人的常见问题.WCF 只是不灵活.我创建了自己的开源 C# 库,用于在没有 WCF 的情况下创建 REST 服务.检查 restcake.net 或 rest.codeplex.com 获取有关该库的信息.结束更新 2012 年 8 月 2 日更新ASP.NET Web API ..
发布时间:2022-01-11 22:04:23 其他开发