visual studio使用技巧:快速生成Json、XML对应类

visual studio快速生成Json、XML对应类

在项目中经常用到json或者xml作为配置文件,进行序列化和反序列化就需要有对应的类,重新写一遍类就比较麻烦,这里就讲一下通过visual studio快速生成json或者xml对应类型的方法。

自动生成Json类

复制一个json文件,自动在visual studio中生成

复制Json文件

{"DeviceLinks": [{"UID": "device01","Ip": "127.0.0.1","Port": 502,"SlaveId": 1,"AcqTimeSpan": 1},{"UID": "device02","Ip": "127.0.0.1","Port": 503,"SlaveId": 1,"AcqTimeSpan": 1}],"MqttConfig": {"Ip": "127.0.0.1","Port": 1883,"Username": "admin","Password": "12345"},"ServiceConfig": {"PushTimeSpan": 5,"IsPushScheduled": true,"IsPushChanged": true}
}

切换到一个cs的类文件

必须在c#的cs文件中,才能看到编辑中对应的菜单

在这里插入图片描述

选择性粘贴

在菜单栏,“编辑”→“选择性粘贴”→将JSON粘贴为类

在这里插入图片描述

代码自动生成,会生成一个Rootobject为json的主类,子类也会一起生成,这里根据json字段定义,自动生成对应的子类

在这里插入图片描述

public class Rootobject
{public Devicelink[] DeviceLinks { get; set; }public Mqttconfig MqttConfig { get; set; }public Serviceconfig ServiceConfig { get; set; }
}public class Mqttconfig
{public string Ip { get; set; }public int Port { get; set; }public string Username { get; set; }public string Password { get; set; }
}public class Serviceconfig
{public int PushTimeSpan { get; set; }public bool IsPushScheduled { get; set; }public bool IsPushChanged { get; set; }
}public class Devicelink
{public string UID { get; set; }public string Ip { get; set; }public int Port { get; set; }public int SlaveId { get; set; }public int AcqTimeSpan { get; set; }
}

注意:转换大小写,会跟随json文件,需要自己调整一下

在这里插入图片描述

自动生成XML类

步骤一样,选择性粘贴中选择“将XML粘贴为类”

在这里插入图片描述

示例XML:

<Configuration><DeviceLinks><DeviceLink><UID>device01</UID><Ip>127.0.0.1</Ip><Port>502</Port><SlaveId>1</SlaveId><AcqTimeSpan>1</AcqTimeSpan></DeviceLink><DeviceLink><UID>device02</UID><Ip>127.0.0.1</Ip><Port>503</Port><SlaveId>1</SlaveId><AcqTimeSpan>1</AcqTimeSpan></DeviceLink></DeviceLinks><MqttConfig><Ip>127.0.0.1</Ip><Port>1883</Port><Username>admin</Username><Password>12345</Password></MqttConfig><ServiceConfig><PushTimeSpan>5</PushTimeSpan><IsPushScheduled>true</IsPushScheduled><IsPushChanged>true</IsPushChanged></ServiceConfig>
</Configuration>

生成结果

在这里插入图片描述

// 注意: 生成的代码可能至少需要 .NET Framework 4.5 或 .NET Core/Standard 2.0。
/// <remarks/>
[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
[System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)]
public partial class Configuration
{private ConfigurationDeviceLink[] deviceLinksField;private ConfigurationMqttConfig mqttConfigField;private ConfigurationServiceConfig serviceConfigField;/// <remarks/>[System.Xml.Serialization.XmlArrayItemAttribute("DeviceLink", IsNullable = false)]public ConfigurationDeviceLink[] DeviceLinks{get{return this.deviceLinksField;}set{this.deviceLinksField = value;}}/// <remarks/>public ConfigurationMqttConfig MqttConfig{get{return this.mqttConfigField;}set{this.mqttConfigField = value;}}/// <remarks/>public ConfigurationServiceConfig ServiceConfig{get{return this.serviceConfigField;}set{this.serviceConfigField = value;}}
}/// <remarks/>
[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public partial class ConfigurationDeviceLink
{private string uIDField;private string ipField;private ushort portField;private byte slaveIdField;private byte acqTimeSpanField;/// <remarks/>public string UID{get{return this.uIDField;}set{this.uIDField = value;}}/// <remarks/>public string Ip{get{return this.ipField;}set{this.ipField = value;}}/// <remarks/>public ushort Port{get{return this.portField;}set{this.portField = value;}}/// <remarks/>public byte SlaveId{get{return this.slaveIdField;}set{this.slaveIdField = value;}}/// <remarks/>public byte AcqTimeSpan{get{return this.acqTimeSpanField;}set{this.acqTimeSpanField = value;}}
}/// <remarks/>
[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public partial class ConfigurationMqttConfig
{private string ipField;private ushort portField;private string usernameField;private ushort passwordField;/// <remarks/>public string Ip{get{return this.ipField;}set{this.ipField = value;}}/// <remarks/>public ushort Port{get{return this.portField;}set{this.portField = value;}}/// <remarks/>public string Username{get{return this.usernameField;}set{this.usernameField = value;}}/// <remarks/>public ushort Password{get{return this.passwordField;}set{this.passwordField = value;}}
}/// <remarks/>
[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public partial class ConfigurationServiceConfig
{private byte pushTimeSpanField;private bool isPushScheduledField;private bool isPushChangedField;/// <remarks/>public byte PushTimeSpan{get{return this.pushTimeSpanField;}set{this.pushTimeSpanField = value;}}/// <remarks/>public bool IsPushScheduled{get{return this.isPushScheduledField;}set{this.isPushScheduledField = value;}}/// <remarks/>public bool IsPushChanged{get{return this.isPushChangedField;}set{this.isPushChangedField = value;}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/404477.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图像数据处理17

四、形态学图像处理 4.3 开运算与闭运算 4.3.1开运算与闭运算的定义&#xff1a; 开运算&#xff1a;先腐蚀&#xff0c;再膨胀 闭运算&#xff1a;先膨胀&#xff0c;再腐蚀 记忆方法&#xff1a;膨胀&#xff08;胀开&#xff09;所以开运算最后对应的结果是膨胀&#x…

c++进阶——继承的定义,复杂的菱形继承及菱形虚拟继承

目录 前言&#xff1a; 1.继承的概念及定义 1.1继承的概念 1.2 继承定义 1.2.2继承关系和访问限定符 1.2.3继承基类成员访问方式的变化 2.基类和派生类对象赋值转换 3.继承中的作用域 4.派生类的默认成员函数 5.继承与友元 6. 继承与静态成员 7.复杂的菱形继承及菱…

springsecurity 登录认证一(ajax)

一、准备工作 1.1 导入依赖 因springboot 3.0 以上版本只能支持java17 顾使用2.5.0 版本 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.0</version><…

网络工程3(子网通信,为什么要使用mac和ip)

文章目录 一. 子网如何通讯1. 子网内部通信2. 子网外部通信 二. 交换机和路由器的连接三. 为什么不只使用mac地址或ip地址进行网络通信1. 首先要明确的是&#xff0c;不管是只用mac或只用ip通信 四. 子网设备如何获得ip五. 不同网段的主机无法直接通信的原因 一. 子网如何通讯 …

音频矩阵主要功能及常规路数配置有哪些

音频矩阵&#xff0c;又称AUDIO矩阵或音频矩阵切换器&#xff0c;是一种用于管理和控制多个音频信号的设备。它具备多种功能&#xff0c;主要可以概括为以下几个方面&#xff1a; 一、主要功能 信号切换&#xff1a; AUDIO128128音频矩阵能够将多个音频源的信号输入到设备中&…

Python实现水果忍者(开源)

一、整体介绍&#xff1a; 1.1 前言&#xff1a; 游戏代码基于Python制作经典游戏案例-水果忍者做出一些改动&#xff0c;优化并增加了一些功能。作为自己Python阶段学习的结束作品&#xff0c;文章最后有源码链接。 1.2 Python主要知识&#xff1a; &#xff08;1&#xf…

怎么选开放式耳机好?精选五款物超所值机型推荐!

耳机已成为我们日常生活中的常见伙伴&#xff0c;无论是听音乐、玩游戏还是看剧&#xff0c;都离不开它。市场上耳机品牌和款式众多&#xff0c;找到一款真正适合自己的并不容易。尤其是长时间佩戴传统入耳式耳机可能会感到耳朵不舒服或闷热。开放式耳机因其非侵入式设计&#…

运维学习————Linux环境下Tomcat的部署

目录 一、环境准备 二、 启动测试 三、访问端口修改 四、部署web项目 1、材料准备 2、部署 2.1、上传war包到webapps目录下 2.2、修改项目配置 2.3、浏览器访问 引申 一、环境准备 tomcat安装包&#xff1a;apache-tomcat-9.0.52 JDK环境&#xff1a; 我使用的y…

MATLAB口罩检测系统

一、应用背景 作为数字图像处理和计算机视觉领域的一个重要组成部分&#xff0c;利用摄像机对图像进行采集&#xff0c;从图像中检测人脸并进行口罩穿戴的识别的有着非常重要的研究意义和应用价值。面对突如其来的新型肺炎疫情&#xff0c;人们生活秩序被严重打乱。跟普通流感…

LeetCode.80.删除有序数组中的重复项II

题目描述&#xff1a; 给你一个有序数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使得出现次数超过两次的元素只出现两次 &#xff0c;返回删除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须在 原地 修改输入数组 并在使用 O(1) 额外空间…

idea 修改背景图片教程

&#x1f30f;个人博客主页&#xff1a;意疏-CSDN博客 希望文章能够给到初学的你一些启发&#xff5e; 如果觉得文章对你有帮助的话&#xff0c;点赞 关注 收藏支持一下笔者吧&#xff5e; 阅读指南&#xff1a; 开篇说明修改背景图片 开篇说明 给小白看得懂的修改图片教程&…

物流抓取机器人整体设计方案

一、功能简介 1、运行环境&#xff1a;巡线行驶&#xff08;7路数字循迹&#xff0c;麦克纳姆轮车底盘&#xff09; 2、目标识别&#xff1a;颜色识别&#xff08;Maix-II Dock 视觉模块&#xff09; 3、目标定位&#xff1a;视觉测距&#xff08;Maix-II Dock 视觉模块&#x…

【RPA学习天地:财务网银RPA方案】各银行网银(工行、招行、苏州银行等)流水和回单下载

RPA学习天地&#xff08;https://www.rpa-learning.com/&#xff09; 前言&#xff1a; 自 2021 年起&#xff0c;RPA 学习天地已成功为来自各个行业的数千名学员赋予了 RPA 技能。通过对众多学员在自动化需求方面的深入探究&#xff0c;我们发现财务的资金领域中与网银相关的…

【iOS】—— JSONModel

JSONModel源码 1. JSONModel介绍2. JSONModel的其他用法2.1 转换属性名称2.2 自定义错误 3. 源码分析3.1 - (id)initWithDictionary:(NSDictionary*)dict error:(NSError**)err3.2 JSONModel持有的数据3.3 load3.4 JSONModel的init方法3.5 __inspectProperties方法3.6 JSONMode…

8月19日笔记

http隧道搭建(续) ABPTTS安装使用 一款基于 SSL 加密的 HTTP 端口转发工具&#xff0c;全程通信数据加密&#xff0c;比 reGerog 都要稳定。使用 python2 编写&#xff0c;但是该工具只支持 aspx 和 jsp 脚本的网站。 下载地址&#xff1a;https://github.com/nccgroup/ABPTT…

测试报告---自动化测试

一、测试用例 上文铺垫了基础知识。 https://blog.csdn.net/m0_74876421/article/details/141307905https://blog.csdn.net/m0_74876421/article/details/141307905 二、性能测试 1.准备功能&#xff1a; 浏览器驱动以及selenim包 引入依赖&#xff1a;在pom.xml文件中添加…

selenium底层原理详解

目录 1、selenium版本的演变 1.1、Selenium 1.x&#xff08;Selenium RC时代&#xff09; 1.2、Selenium 2.x&#xff08;WebDriver整合时代&#xff09; 1.3、Selenium 3.x 2、selenium原理说明 3、源码说明 3.1、启动webdriver服务建立连接 3.2、发送操作 1、seleni…

【性能优化】修复一个谷歌官方承认的内存泄漏问题

前言 通过下面这段代码&#xff0c;配合控制台可以直观看到谷歌官方承认的一个内存泄漏问题&#xff0c;https://issues.chromium.org/issues/41403456。 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta …

前端css动画transform多个属性值写法

X轴平移400px transform: translateX(400px); X轴平移400px并缩小0.5倍 transform: translateX(400px) scale(0.5); X轴平移400px并旋转45度 transform: translateX(400px) rotate(45d…

备考2024年美国数学竞赛AMC10:吃透1250道真题和知识点(持续)

有什么含金量比较高的初中生数学竞赛吗&#xff1f;美国数学竞赛AMC10是个不错的选择。那么&#xff0c;如何备考AMC10美国数学竞赛呢&#xff1f;做真题&#xff0c;吃透真题和背后的知识点是备考AMC8、AMC10有效的方法之一。 通过做真题&#xff0c;可以帮助孩子找到真实竞赛…