牛啊牛啊:C#/.NET一行代码把实体类类型转换为Json数据字符串

前言:刚好要做一个类似Swagger那种可以快速访问api接口和演示的功能,于是就把做的思路写到包里面去,给有需要的小伙伴提供学习和参考。

首先,安装1.0.10以及以上版本的 Wesky.Net.OpenTools 包

4d4e20a32aaedebba2fcfe66d863e28e.png

包内,该功能的核心代码如下:

自定义属性:

ebd0a38f1ebc30e3b6031228386d1db2.png

实体类JSON模式生成器:

82ae49480800e03d6c9b120969e572c5.png

使用方式:引用上面的1.0.10版本或以上的包。如果实体类有特殊需求,例如映射为其他名称,可以用OpenJson属性来实现。实体类对象案例如下:

13c9a2c4e90f2cf2e7d2fc0f4bfb7069.png

上面实体类,提供了属性小写标记、没有任何标记、以及一个集合属性,用于展示可能存在的多种情况。如果需要小写,或者映射为其他的,可以通过OpenJson属性来标记为指定的名称;如果存在多层或者集合,也可以自动识别嵌套关系。

使用方式,只需要一行代码即可:

710f10d95a03fff8bab9c48e3d611c3b.png

输出结果如下所示。

49202afecfb391d4a7a79edb95b8feac.png

应用场景:可以用于实现类似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】

d644e6f4fd3362e47d5984331dbb2c47.jpeg

OpenTools系列文章快捷链接【新版本完全兼容旧版本,不需要更新任何代码均可使用】:

1.0.8版本:

上位机和工控必备!用.NET快速搞定Modbus通信的方法

https://mp.weixin.qq.com/s/Yq6kuXzFglHfNUqrHcQO9w

1.0.7版本:

大揭秘!.Net如何在5分钟内快速实现物联网扫码器通用扫码功能?

https://mp.weixin.qq.com/s/-5VuLAS6HlElgDQXRY9-BQ

1.0.6版本:

.NET实现获取NTP服务器时间并同步(附带Windows系统启用NTP服务功能)

https://mp.weixin.qq.com/s/vMW0vYC-D9z0Dp6HFSBqyg

1.0.5版本:

C#使用P/Invoke来实现注册表的增删改查功能

https://mp.weixin.qq.com/s/LpsjBhDDzkwyLU_tIpF-lg

1.0.3版本:

C#实现图片转Base64字符串,以及base64字符串在Markdown文件内复原的演示

https://mp.weixin.qq.com/s/n9VtTCIiVUbHJk7OfoCcvA

1.0.2版本:

C#实现Ping远程主机功能(支持IP和域名)

https://mp.weixin.qq.com/s/d-2HcIM1KaLo-FrrTLkwEw

1.0.1版本:

开始开源项目OpenTools的创作(第一个功能:AES加密解密)

https://mp.weixin.qq.com/s/78TA-m‍st‍459AuvAHwQViqQ

【备注】包版本完全开源,并且没有任何第三方依赖。使用.net framework 4.6+、任意其他跨平台.net版本环境,均可直接引用。

再次感谢各位阅读~~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值