使用Wesky.Net.Opentools库,一行代码实现实体类类型转换为Json格式字符串

wesky,net,opentools,json · 浏览次数 : 5

小编点评

**Wesky.Net.OpenTools** 是一个用于.NET平台的开放工具库,它提供了一系列的功能来简化开发者的日常工作流程。该库的核心代码包括自定义属性、实体类JSON模式生成器等,可以帮助开发者更高效地处理实体类和JSON数据。 ### 功能介绍 #### 自定义属性 允许开发者在实体类中自定义属性,通过`OpenJson`属性来实现。这使得实体类的属性名可以根据需要进行转换或标记。 #### 实体类JSON模式生成器 该功能能够根据实体类自动生成相应的JSON模式,这样开发者就可以轻松地为WebAPI或其他客户端生成输入参数的JSON结构。 #### 使用方式 只需要在项目中引用相应的`Wesky.Net.OpenTools`版本,然后在代码中使用`OpenJsonSchemaGenerator`类创建JSON模式即可。 #### 示例代码 下面的示例展示了如何使用`OpenJsonSchemaGenerator`类来生成`TestInfo`类的JSON模式: ```csharp var data = OpenJsonSchemaGenerator.CreateJsonSchema(typeof(TestInfo)); Console.WriteLine(data); ``` ### 应用场景 该库的主要应用场景包括: - 将实体类转换为可呈现的JSON结构。 - 快速填充WebAPI或其他客户端的应用程序界面参数。 - 在自动化测试中快速生成参数数据。 ### 总结 `Wesky.Net.OpenTools`为.NET开发者提供了一个强大的工具集,以简化和加速开发过程。无论是自动生成JSON模式,还是快速填充输入参数,这些功能都能极大地提升工作效率。

正文

安装1.0.10以及以上版本的 Wesky.Net.OpenTools 包
0
 
包内,该功能的核心代码如下:
自定义属性:
0
实体类JSON模式生成器:
0
 
使用方式:引用上面的1.0.10版本或以上的包。如果实体类有特殊需求,例如映射为其他名称,可以用OpenJson属性来实现。实体类对象案例如下:
0
上面实体类,提供了属性小写标记、没有任何标记、以及一个集合属性,用于展示可能存在的多种情况。如果需要小写,或者映射为其他的,可以通过OpenJson属性来标记为指定的名称;如果存在多层或者集合,也可以自动识别嵌套关系。
使用方式,只需要一行代码即可:
0
输出结果如下所示。
0
应用场景:可以用于实现类似swagger的输入参数的快速赋值操作。例如访问webapi接口,通过解析对应参数实体,自动显示输入参数的Json结构,然后里面填写结果进行快速演示测试之类的。或者其他拓展方法等,需要大佬们感兴趣的自己去玩玩。
本次演示代码:
  public class TestInfo
  {
      
      [OpenJson("name")]
      public string Name { get; set; }
      [OpenJson("description")]
      public string Description { get; set; }
      public int Age { get; set; }
      public bool IsMale { get; set; }
      public string School { get; set; }
      public List<Student> Students { get; set; }
  }

  public class Student
  {
      [OpenJson("name")]
      public string Name { get; set; }
      public string Address { get; set; }

  }
  
  // Program:
  static void Main(string[] args)
{
    var data = OpenJsonSchemaGenerator.CreateJsonSchema(typeof(TestInfo));
   
    Console.WriteLine(data);
    Console.ReadLine();
}

 

 
如果以上内容对你有帮助,欢迎点赞、转发、在看和关注我的个人公众号:【Dotnet Dancer】
OpenTools系列文章快捷链接【新版本完全兼容旧版本,不需要更新任何代码均可使用】:
1.0.8版本:
上位机和工控必备!用.NET快速搞定Modbus通信的方法
1.0.7版本:
大揭秘!.Net如何在5分钟内快速实现物联网扫码器通用扫码功能?
1.0.6版本:
.NET实现获取NTP服务器时间并同步(附带Windows系统启用NTP服务功能)
1.0.5版本:
C#使用P/Invoke来实现注册表的增删改查功能
1.0.3版本:
C#实现图片转Base64字符串,以及base64字符串在Markdown文件内复原的演示
1.0.2版本:
​C#实现Ping远程主机功能(支持IP和域名)
1.0.1版本:
开始开源项目OpenTools的创作(第一个功能:AES加密解密)
 
【备注】包版本完全开源,并且没有任何第三方依赖。使用.net framework 4.6+、任意其他跨平台.net版本环境,均可直接引用。
 

与使用Wesky.Net.Opentools库,一行代码实现实体类类型转换为Json格式字符串相似的内容:

使用Wesky.Net.Opentools库,一行代码实现实体类类型转换为Json格式字符串

安装1.0.10以及以上版本的 Wesky.Net.OpenTools 包 包内,该功能的核心代码如下: 自定义属性: 实体类JSON模式生成器: 使用方式:引用上面的1.0.10版本或以上的包。如果实体类有特殊需求,例如映射为其他名称,可以用OpenJson属性来实现。实体类对象案例如下: 上面实

使用Wesky.Net.Opentools库,一行代码实现自动解析实体类summary注释信息(可用于数据实体文档的快速实现)

使用前,需要对你的项目勾选输出api文档文件。 引用Wesky.Net.OpenTools包,保持1.0.11版本或以上。 为了方便,我直接在昨天的演示基础上,继续给实体类添加注释。 昨天的演示文章可参考: C#/.NET一行代码把实体类类型转换为Json数据字符串 https://mp.weixi

.NET使用P/Invoke来实现注册表的增、删、改、查功能

注册表可以用来进行存储一些程序的信息,例如用户的权限、或者某些值等,可以根据个人需要进行存储和删减。 当前注册表主目录: 引用包 Wesky.Net.OpenTools 1.0.5或者以上版本 操作演示: 创建注册表项 设置注册表值 读取注册表值 删除注册表值 删除注册表项 操作演示代码 IRegi

使用Wesky.Net.OpenTools包来快速实现嵌套型结构体数据转换功能

今天遇到有人提到结构体和byte数组互转的问题,我就顺便拿来水一篇。这是一个冷门的问题,估计使用的人不多。既然有需求,应该就有使用场景,那就顺便整一波。 为了达到效果,结构体、复杂结构体嵌套等都能实现转换,我就顺便做了个包更新来提供使用和下面的说明。 首先引入nuget包 Wesky.Net.Ope

上位机开发福利!快速掌握.NET中的Modbus通信

安装nuget包 Wesky.Net.OpenTools 1.0.8或以上版本。支持.net framework 4.6以上版本,以及所有.net core以及以上版本引用。 开发一个简单的Winform界面,用来测试使用。如需该winform的demo,可以在公众号【Dotnet Dancer】后

使用C#/.NET解析Wiki百科数据实现获取历史上的今天

创建一个webapi项目做测试使用。 创建新控制器,搭建一个基础框架,包括获取当天日期、wiki的请求地址等 创建一个Http请求帮助类以及方法,用于获取指定URL的信息 使用http请求访问指定url,先运行一下,看看返回的内容。内容如图右边所示,实际上是一个Json数据。我们主要解析 大事记 部

Python使用.NET开发的类库来提高你的程序执行效率

Python由于本身的特性原因,执行程序期间可能效率并不是很理想。在某些需要自己提高一些代码的执行效率的时候,可以考虑使用C#、C++、Rust等语言开发的库来提高python本身的执行效率。接下来,我演示一种使用.NET平台开发的类库,来演示一下Python访问.NET类库的操作实现。类库演示包括

WPF使用事件聚合器,实现任意页面跨页通信

前言:最近几天有好几个小伙伴玩WPF,遇到不同页面,不知道要怎么传递消息。于是,我今天就来演示一个事件聚合器的玩法,采用prism框架来实现。作为福利,内容附带了主页面打开对话框时候直接通过参数传递消息的一个小例子,具体请自行围观。 以下内容,创建wpf项目以及引用prism和实现依赖注入等细节,可

谁说.net core不好动态访问webservice?看这篇文章,C#快速实现动态访问webservice,兼容.net framework和.net core+

前言:访问webservice,大多数人都是用服务引用的方式,但是这种方式比较麻烦,例如遇到服务更新了,你还需要手动更新你的服务引用,再重新发布,很麻烦。或者已有的一些例子,至少我看到的很多案例,动态访问也只能止步于使用.net framework环境,没看到有啥.net core上面动态访问的案例

一款WPF的精简版MVVM框架——stylet框架的初体验(包括MVVM绑定、依赖注入等操作)

今天偶然知道一款叫做stylet的MVVM框架,挺小巧的,特别是它的命令触发方式,简单粗暴,让人感觉很巴适,现在我做一个简单的demo来顺便来分享给大家。 本地创建一个WPF项目,此处我使用.NET 8来创建。然后引用stylet最新的nuget包。 然后删掉App.xaml里面自带的启动项 删掉以