推荐几个开发必备的JSON工具
众所周知,JSON让开发人员易于使用,又让机器易于解析和生成。
JSON吸引了工具构建者的注意,它们开发了用于重新格式化、验证和解析JSON的众多工具,这不足为奇。这些工具既有在Web浏览器中运行的在线实用程序,又有面向代码编辑器和IDE的插件,比如Visual Studio Code和Eclipse。
下面介绍了其中九款工具。
JSONLint
来自CircleCell的JSONLint是一款面向JSON的在线验证和重新格式化工具。开发人员可以将JSON粘贴或输入到编辑器中,或者输入URL。JSONLint可以验证“混乱”的JSON代码,还可以解析。如果用户将?reformat=compress添加到URL,JSONLint还可以用作JSON压缩工具。
何处可以访问JSONLint?
可以在网问JSONLint(https://jsonlint.com/)。该工具的源代码可以在GitHub上找到(https://github.com/circlecell/jsonlint.com)。
JSONCompare
JSONLint的高级版本JSONCompare可以直接验证JSON代码。它可以同时上传和验证多个批处理JSON文件,比较和合并两个JSON对象。JSONCompare有简单模式、批处理模式和差异模式。与JSONLint一样,JSONCompare也由CircleCell开发。
何处可以访问JSONCompare?
可以在网上找到JSONCompare(https://jsoncompare.com/)。源代码可以在GitHub上找到(https://github.com/circlecell/jsoncompare.com)。
jtc
Jtc的全称是“JSON测试控制台”,这个CLI工具用于提取、处理和转换源JSON。开发人员可以使用jtc从源JSON选择一个或多个元素,立即对这些元素执行操作,比如将选定的元素包装到新的JSON中、过滤进出或更新元素。用户界面允许使用单个命令进行大量更改。Linux和MacOS编译二进制文件可供下载。
何处可以下载JTC?
可以从GitHub下载jtc(https://github.com/ldn-softdev/jtc#compile-and-install-instructions)。
ijson
ijson最初于2016年开发,是一款拥有标准Python迭代器界面的迭代JSON解析工具。最常见的用途是让ijson从前缀以下的JSON流生成原生Python对象。ijson提供实际解析的几种实现:基于C的YAJL(另一种JSON库)或Python后端。
何处可以下载ijson?
可以从PyPI下载ijson(https://pypi.org/project/ijson/#files)。
JSON格式化和验证器
JSON格式化和验证器这款在线工具旨在对JSON进行格式化和美化,以便更易于阅读和调试。由于JSON的输出不用换行(以节省空间),因此可能难以阅读和理解。使用这款在线格式化工具的开发人员只需粘贴JSON或URL。JSON格式化和验证器书签可用于格式化和验证公共JSON URL。
何处可以访问JSON格式化和验证器?
可以在网问JSON格式化和验证器(https://jsonformatter.curiousconcept.com/)。
Altova XMLSpy JSON和 XML编辑器
Altova XMLSpy是一款JSON和XML编辑工具,提供了用于编辑、建模、转换和调试XML相关技术的各种工具。主要的工具包括图形化模式设计器、代码生成工具、文件转换器、调试器以及用于处理XSLT、XSD、XBRL和SOAP的分析器。XMLSpy利用RaptorXML Server进行JSON验证和处理。
何处可以下载Altova XMLSpy?
可以从Altova网站下载Altova XMLSpy的免费试用版(https://www.altova.com/xmlspy-xml-editor/download)。
Code Beautify JSON工具
Code Beautify JSON工具包括JSON查看器、JSON编辑器、JSON验证器以及JSON到HTML、JSON到XML和JSON到YAML等转换器。还提供了Excel到JSON转换器和JSON 缩小器。Code Beautify还为XML、HTML、CSV、CSS、RSS、SQL、Base64及其他数据格式和文件类型提供了在线脚本编辑器、美化器、缩小器和转换器。
何处可以访问Code Beautify JSON工具?
可以在网问Code Beautify JSON工具(https://codebeautify.org/json-tools)。
Visual Studio Code
微软这款流行的代码编辑器内置了支持编辑JSON文件的功能。这包括通过IntelliSense针对属性和值进行验证、快速导航、代码折叠和建议。将鼠标悬停在JSON数据的属性和值上方时,会提供另外的上下文。VS Code将使用关联的JSON模式以了解JSON文件的结构。
何处可以下载Visual Studio Code?
可以从项目网站下载Visual Studio Code(https://code.visualstudio.com/Download)。
Eclipse JSON编辑器插件
面向Eclipse IDE的免费JSON编辑器插件包括自定义语法高亮、代码折叠、格式化和编辑等功能,提供了同步树视图。还提供语法树解析。Eclipse JSON编辑器插件符合RFC 4627 JSON标准。
何处可以下载Eclipse JSON编辑器插件?
可以从Eclipse Marketplace下载Eclipse JSON编辑器插件(https://marketplace.eclipse.org/content/json-editor-plugin)。
推荐两款linux下的应用,在线音乐与视频播放软件:
推荐两款linux下的应用,在线音乐与视频播放软件:
随着跨平台软件越来越多,linux下的应用也丰富起来,让我们看到linux也能成为大家的日常操作系统。
看到很多人找linux下的在线音乐和视频播放软件,很多人都不满意,许多软件更是停更了,比如网易去音乐。这是我遇到非常棒的两个开源软件,无需注册登录,音乐免费听,影视随便看。
MusicFree
deepin、UOS用户可以直接在应用商店下载,其它系统可以直接下载deb安装包,很容易搜到的。
该音乐播放软件界面与流行的在线音乐软件大同小异,关键在左边多了一个插件管理,是的,这是这款软件的灵魂:
打开后在线导入以下插件:
小枸音乐(酷狗)
https://raw.niuma666bet.buzz/Huibq/keep-alive/master/Music_Free/xiaogou.js
小秋音乐(QQ)
https://raw.niuma666bet.buzz/Huibq/keep-alive/master/Music_Free/xiaoqiu.js
小蜗音乐(酷我)
https://raw.niuma666bet.buzz/Huibq/keep-alive/master/Music_Free/xiaowo.js
小蜜音乐(咪咕)
https://raw.niuma666bet.buzz/Huibq/keep-alive/master/Music_Free/xiaomi.js
小芸音乐(网易云)
https://raw.niuma666bet.buzz/Huibq/keep-alive/master/Music_Free/xiaoyun.js
QQ音乐
http://adad23u.appinstall.life/dist/qq/index.js
网易云音乐
https://gitee.com/raycn120/musicfree/raw/master/netease.js
Bilibili
http://adad23u.appinstall.life/dist/bilibili/index.js
酷我音乐
http://adad23u.appinstall.life/dist/kuwo/index.js
咪咕音乐
http://adad23u.appinstall.life/dist/migu/index.js
全网音乐免费听、免费下载,不要再说什么VIP了,大家都是VIP。昨天看到一个博主找能够在线显示歌词的,找了很多都不满意。朋友,你不用找了,这里都有,本地音乐也可以给你配上歌词。唯一不满意的一点就是作者不配一个好看的桌面图标,是不是太懒了?我自己找了个音乐图标替换应用文件夹下的图标,这样舒服多了,具体操作就不说了,玩linux的动手能力都挺强的。
下面介绍在线视频播放软件:
Zyplayer
图上没显示应用名称,告诉大家:ZyPlayer3.36,这里就不提供下载地址了,很容易搜到,大家到github.com上下载最新版本,低版本的可能看不了。
要想看视频,需要通过设置导入视频源,是的,这个就是桌面版的TVBOX,操作不难啊,小白也能轻松操作,不要害怕就跳过去了。点击应用右上角的设置按钮,按照下图提示,一键导入下列源就可以看视频了,导入后可能要重新启动一下应用。
导入视频源
源一
https://pan.shangui.cc/f/BDQ4Up/zyplayer_102.json
源二
https://521github.com/meinvtuzai/zy3/raw/master/%E4%B8%80%E9%94%AE%E9%85%8D%E7%BD%AE2.json
源三
http://xiaoguozitv.cn/catys/zyplay.json
源四
https://v.xzbzq.com/y/zy.json
非常好用的视频软件,看流行电视剧无需VIP,再说一遍,大家都是VIP。搜索影视时有点麻烦,它不能全局搜索,有些源里搜索不到,可以换一个源重新搜索。唯一注意一点的是,该软件不适合小朋友单独观看,需要大人陪同。不是故型玄虚,里面有些内容少儿不易,自己看看就好,不要让家里孩子单独操作,以免大人小孩都尴尬。
大家如果喜欢,可以点赞转发。喜欢linux的朋友可以关注、交流!
性能高、上手快,实体类转换工具 MapStruct 到底有多强大
对于代码中 JavaBean之间的转换, 一直是困扰我很久的事情。在开发的时候我看到业务代码之间有很多的 JavaBean 之间的相互转化, 非常的影响观感,却又不得不存在。我后来想的一个办法就是通过反射,或者自己写很多的转换器。
第一种通过反射的方法确实比较方便,但是现在无论是 BeanUtils, BeanCopier 等在使用反射的时候都会影响到性能。虽然我们可以进行反射信息的缓存来提高性能。但是像这种的话,需要类型和名称都一样才会进行映射,有很多时候,由于不同的团队之间使用的名词不一样,还是需要很多的手动 set/get 等功能。
第二种的话就是会很浪费时间,而且在添加新的字段的时候也要进行方法的修改。不过,由于不需要进行反射,其性能是很高的。推荐:Java进阶视频资源
MapSturct 是一个生成类型安全,高性能且无依赖的 JavaBean 映射代码的注解处理器(annotation processor)。
- 注解处理器
- 可以生成 JavaBean 之间那的映射代码
- 类型安全,高性能,无依赖性
2.1 添加依赖
2.2 po类
2.3 dto类
2.4 创建转换接口
2.5 测试方法
2.6 运行效果
2.7 查看编译的class
底层通过自动取值赋值操作完成
3.1 性能高
这是相对反射来说的,反射需要去读取字节码的内容,花销会比较大。而通过 MapStruct 来生成的代码,其类似于人手写。速度上可以得到保证。
3.2 使用简单
如果是完全映射的,使用起来肯定没有反射简单。用类似 BeanUtils 这些工具一条语句就搞定了。但是,如果需要进行特殊的匹配(特殊类型转换,多对一转换等),其相对来说也是比较简单的。
基本上,使用的时候,我们只需要声明一个接口,接口下写对应的方法,就可以使用了。当然,如果有特殊情况,是需要额外处理的。推荐:Java进阶视频资源
3.3 代码独立
生成的代码是对立的,没有运行时的依赖。
3.4 易于 debug
在我们生成的代码中,我们可以轻易的进行 debug。
4.1 属性名称相同
在实现类的时候,如果属性名称相同,则会进行对应的转化。通过此种方式,我们可以快速的编写出转换的方法。(入门案例)
4.2 属性名不相同
属性名不相同,在需要进行互相转化的时候,则我们可以通过@Mapping 注解来进行转化。
- source 需要转换的对接,通常是入参
- target 转换的对接,通常是出参
- ignore 忽略,默认false不忽略,需要忽略设置为true
- defaultValue 默认值
- expressions 可以通过表达式来构造一些简单的转化关系。虽然设计的时候想兼容很多语言,不过目前只能写Java代码。
这里用到演示了如何使用TimeAndFormat对time和format操作,这里必须要指定需要使用的Java类的完整包名,不然编译的时候不知道你使用哪个Java类,会报错。
4.3 转换非基础类型属性
如果subUser与subUserDto字段名称相同直接配置即可完成(对象类型,包括list)
4.4 Mapper 中使用自定义的转换
有时候,对于某些类型,无法通过代码生成器的形式来进行处理。那么, 就需要自定义的方法来进行转换。这时候,我们可以在接口(同一个接口,后续还有调用别的 Mapper 的方法)中定义默认方法(Java8及之后)。
只能存在一个default修饰的方法
4.5 多转一
我们在实际的业务中少不了将多个对象转换成一个的场景。MapStruct 当然也支持多转一的操作。推荐:Java进阶视频资源
4.5.1 遵循原则
- 当多个对象中, 有其中一个为 null, 则会直接返回 null
- 如一对一转换一样, 属性通过名字来自动匹配。因此, 名称和类型相同的不需要进行特殊处理
- 当多个原对象中,有相同名字的属性时,需要通过 @Mapping 注解来具体的指定, 以免出现歧义(不指定会报错)。如上面的 name
属性也可以直接从传入的参数来赋值
4.6 更新 Bean 对象
有时候,我们不是想返回一个新的 Bean 对象,而是希望更新传入对象的一些属性。这个在实际的时候也会经常使用到。
4.7 map映射
4.8 多级嵌套
只需要在mapper接口中定义相关的类型转换方法即可,list类型也适用
4.8.1 方式1
4.8.2 方式2
通过uses配置类型转换
5.1 通过 Mapper 工厂获取
我们都是通过 Mappers.getMapper(xxx.class) 的方式来进行对应 Mapper 的获取。此种方法为通过 Mapper 工厂获取。
如果是此种方法,约定俗成的是在接口内定义一个接口本身的实例 INSTANCE, 以方便获取对应的实例。
这样在调用的时候,我们就不需要在重复的去实例化对象了。类似下面
5.2 使用依赖注入
对于 Web 开发,依赖注入应该很熟悉。MapSturct 也支持使用依赖注入,同时也推荐使用依赖注入。
5.3 依赖注入策略
可以选择是通过构造方法或者属性注入,默认是属性注入。
类似如此使用
5.4 自定义类型转换
有时候,在对象转换的时候可能会出现这样一个问题,就是源对象中的类型是Boolean类型,而目标对象类型是String类型,这种情况可以通过@Mapper的uses属性来实现:
要注意的是,如果使用了例如像spring这样的环境,Mapper引入uses类实例的方式将是自动注入,那么这个类也应该纳入Spring容器
本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com
文章为作者独立观点不代本网立场,未经允许不得转载。