当前位置: 首页 > news >正文

有那个网站可以做报名链接的最新网站查询工具

有那个网站可以做报名链接的,最新网站查询工具,福建住房城乡建设厅网站,b2b网站如何做本文所有json序列化,都使用的Newtonsoft.Json包 1 JsonIgnore 在 Newtonsoft.Json 中,如果你不想将某些属性转换为 JSON 字符串,可以使用多种方法来实现。以下是几种常见的方法: 1.1 使用 [JsonIgnore] 特性 [JsonIgnore] 特性…

本文所有json序列化,都使用的Newtonsoft.Json包

1 JsonIgnore

在 Newtonsoft.Json 中,如果你不想将某些属性转换为 JSON 字符串,可以使用多种方法来实现。以下是几种常见的方法:

1.1 使用 [JsonIgnore] 特性

[JsonIgnore] 特性可以直接忽略某个属性,使其不会被序列化为 JSON。

using Newtonsoft.Json;public class MyClass
{public int Id { get; set; }public string Name { get; set; }[JsonIgnore]public string Password { get; set; }
}class Program
{static void Main(){var obj = new MyClass { Id = 1, Name = "John", Password = "secret" };string json = JsonConvert.SerializeObject(obj);Console.WriteLine(json);}
}

输出:

{"Id":1,"Name":"John"}

1.2 使用 [JsonProperty] 特性并设置 DefaultValueHandling

你可以使用 [JsonProperty] 特性并设置 DefaultValueHandlingIgnore,这样当属性的值为默认值时,它不会被序列化为 JSON。

using Newtonsoft.Json;public class MyClass
{public int Id { get; set; }public string Name { get; set; }[JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)]public string Password { get; set; }
}class Program
{static void Main(){var obj = new MyClass { Id = 1, Name = "John", Password = null };string json = JsonConvert.SerializeObject(obj);Console.WriteLine(json);}
}

输出:

{"Id":1,"Name":"John"}

2 自定义解析方式

在使用 JsonConvert.DeserializeObject 解析 JSON 数据时,如果某个属性需要以特定的方式进行解析,可以通过自定义 JsonConverter 来实现。JsonConverter 允许你定义如何将 JSON 数据转换为 .NET 对象,或者将 .NET 对象转换为 JSON 数据。

以下是一个示例,展示如何为特定属性创建自定义的 JsonConverter

2.1 创建自定义的 JsonConverter

假设你有一个类 MyClass,其中有一个属性 MyProperty,你希望以特定的方式解析这个属性:

public class MyClass
{public string MyProperty { get; set; }
}

你可以创建一个自定义的 JsonConverter 来处理 MyProperty

public class MyPropertyConverter : JsonConverter<string>
{public override string ReadJson(JsonReader reader, Type objectType, string existingValue, bool hasExistingValue, JsonSerializer serializer){// 读取 JSON 数据var jsonObject = JObject.Load(reader);// 自定义解析逻辑if (jsonObject["customField"] != null){return jsonObject["customField"].ToString();}return string.Empty;}public override void WriteJson(JsonWriter writer, string value, JsonSerializer serializer){// 自定义序列化逻辑writer.WriteValue(value);}
}

2.2 在属性上应用自定义的 JsonConverter

你可以在 MyClassMyProperty 属性上使用 [JsonConverter] 特性来指定自定义的 JsonConverter

public class MyClass
{[JsonConverter(typeof(MyPropertyConverter))]public string MyProperty { get; set; }
}

2.3 使用 JsonConvert.DeserializeObject 进行解析

现在,当你使用 JsonConvert.DeserializeObject 解析 JSON 数据时,MyProperty 属性将按照你定义的自定义逻辑进行解析:

string json = "{ \"MyProperty\": { \"customField\": \"customValue\" } }";
MyClass myObject = JsonConvert.DeserializeObject<MyClass>(json);Console.WriteLine(myObject.MyProperty);  // 输出: customValue

2.4 总结

通过创建自定义的 JsonConverter 并在属性上应用它,你可以灵活地控制 JSON 数据的解析方式。这种方式适用于需要对特定属性进行特殊处理的场景。

3 进阶用法-动态读取,结合反射解析json

一般来说,添加了引用的内容,Newtonsoft.Json都可以直接解析,包括Type

动态读取的dll,如果放在了和执行文件同一目录下也可以正常解析,但是一旦脱离这个目录,json序列化就不行了,找不到对应的内容,尝试了很多方式都不行,结合第二部分,可以使用反射实现。

这种方式有个前提条件,目标dll需要在执行解析之前被读取,这样读取到的资源会保存到AppDomain.CurrentDomain中去,才能进行解析。

Assembly.LoadFrom(dllFile);
/// <summary>
/// 涉及到Type的序列化
/// 并且插件的程序集是程序显式读取的
/// 默认的解析方式读取不到插件对应的dll
/// 需要做自定义解析
/// </summary>
public class TypeJsonConverter : JsonConverter<Type>
{/// <summary>/// 自定义该属性的解析方式/// </summary>public override Type ReadJson(JsonReader reader, Type objectType, Type existingValue, bool hasExistingValue, JsonSerializer serializer){// 自定义解析逻辑if (reader.Value != null){//在调用该程序之前,需要确保插件的dll已经被显式读取,也就是已经存在于主程序集的上下文之中var typeValue = AppDomain.CurrentDomain.GetAssemblies().SelectMany(a => a.GetTypes()).Where(plu => plu.AssemblyQualifiedName.Equals(reader.Value)).FirstOrDefault();return typeValue;}return null;}/// <summary>/// 自定义该属性的写入方式/// </summary>public override void WriteJson(JsonWriter writer, Type value, JsonSerializer serializer){// 自定义序列化逻辑writer.WriteValue(value.AssemblyQualifiedName);}
}

然后标记属性

/// <summary>
/// 插件,标记自定义解析方式,否则会解析失败
/// 目前先这样处理
/// </summary>
[JsonConverter(typeof(TypeJsonConverter))]
public Type PluginType { get; set; }
http://www.dinnco.com/news/9182.html

相关文章:

  • 建网站赚钱吗搜索引擎调词工具哪个好
  • 江门做网站seo的旺道seo推广有用吗
  • linux 安装wordpress站长工具的使用seo综合查询排名
  • 如何自己创建网站性价比高的seo网站优化
  • 珠海网站设计网络优化网上推广企业
  • 网站建设推广人员新公司怎么做网络推广
  • 移动通网站建设青岛最新消息
  • 企业网站建设哪里做网站好全网推广的方式有哪些
  • 太原优化网站百度app下载安装普通下载
  • 响应式旅游网站模版青岛推广优化
  • 百度网址大全址大全88个seo网站优化基础知识点
  • 马鞍山政府网站建设奉化首页的关键词优化
  • 简单的房源展示网站开发企业网站seo方案
  • .net 网站制作互联网推广的好处
  • 琼海网站建设公司百度搜索风云榜
  • 青海网站建设哪家好今日最新新闻摘抄
  • 建立一个网站要多久sem和seo是什么职业
  • 用fullpage做的网站谷歌chrome浏览器下载
  • 企业网络营销策划方案书范例seo研究中心vip教程
  • 网站建设服务套餐查询百度关键词排名
  • 北京装修大概多少钱一平方营销排名seo
  • lol英雄介绍网站模板苏州seo网站系统
  • 做淘宝优惠卷网站步骤百度联盟官网登录入口
  • 车都建设投资集团网站网络营销顾问
  • 这是我做的网站seo课程培训学校
  • 海南小程序开发网站优化公司开始上班了
  • 做网站费用分摊入什么科目自媒体营销的策略和方法
  • 郑州网站建设zhuotop深圳外贸seo
  • 广州线下教学seo准
  • 男人与女人做视频网站网页搜索快捷键是什么