前言
GsonFormat插件,想必开发过Java和Android的同学再熟悉不过,使用它可以快速的把指定的json数据转换为我们需要的对象,大大提高了我们的开发效率。
然而针对ArkTs语言,目前尚未有针对的插件,作为一个较早布局鸿蒙的开发者,这份职责自然要拦下,填补鸿蒙开发的空白,经过一天开发,测试验证后,于是,鸿蒙版的json转对象可以面向大家了。
本篇分享的内容大概如下:
1、两种方式实现json转对象
2、json转对象如何实现
3、相关总结
一、两种方式实现json转对象
针对json转对象,目前开发了两种方式,一种是在线的网页形式,需要自己把生成的对象,复制到项目中,另一种是,devecostudio IDE插件形式,在项目中直接使用,相对网页版来说,更加的便捷,具体如何抉择,看个人使用习惯。
1、网页版json转对象
地址:abnerming888.github.io/vip/json/js…
打开网页之后,UI很是简单,左侧是json输入区域,点击中间的转换对象,就会把json转换为ArkTs对象,回显至右侧的区域,底部有复制按钮,可直接复制到项目中粘贴即可,右侧底部的输入框,是当前的对象名字,也就是类的名字,可以动态修改,记住,修改之后,务必重新点击转换对象按钮。
2、插件版json转对象
上述的网页版,右侧有一个下载插件地址,点击后,就跳转到了IDE插件安装页面,我们按照相关步骤一步一步安装即可,当然这里也给大家简单阐述一遍。
第一步,下载插件
大家可以点击上边的插件下载,或者点击下面的链接,插件下载之后,是一个jar包,大概40KB左右。
abnerming888.github.io/vip/json/ja…
第二步,安装插件
打开devecostudio IDE,找到设置页面,点击Plugins选项,然后再点击设置图标,点击安装本地插件选项,如下图所示:
选择第一步中下载好的插件,点击ok。
继续点击ok即可。
前两步执行完毕后,我们的插件就安装好了。
插件使用
插件安装好之后,在我们创建好的对象类中,就可以进行使用了,两种方式,一种是右键,选择第一个选项“鸿蒙转对象”,另一种是快捷键Ctrl+ALt+P。
上述执行之后,会弹出如下的窗口:
和网页版有着异曲同工之处,上面的输入框是当前对象的名字,一般情况下非必要不要需要修改,直接就是你创建的对象文件名字,往下就是,左侧json输入区域,点击转换之后,会把json转换为右侧的对象可预览模式,在右侧如果你想要修改,可以手动修改,没问题之后,点击底部的确认按钮,就会把生成的对象,回显至当前文件中。
二、json转对象如何实现
如果对实现不感兴趣的,大家只需要关注第一项就可以,毕竟不需要定向开发的话,这个了解的意义不大。
无论把json转换为什么语言的对象,基本上思路都是一致的,都要去遍历json,获取对象的key和value,依据value的数据类型,来定义字段的类型格式,值得高兴的是,ArkTs的数据类型相对Java要少的多。
网页版,毋庸置疑,使用的是js来实现的,对json进行循环遍历,而遇到数组,只遍历首个即可,主要代码如下:
function loopTraversalJson(json) {
let eachJson = "";
for (let key in json) {
let value = json[key];
if (typeof value == "number") {
eachJson = eachJson + " " + key + "?: number\n";
} else if (typeof value == "string") {
eachJson = eachJson + " " + key + "?: string\n";
} else if (typeof value == "boolean") {
eachJson = eachJson + " " + key + "?: boolean\n";
} else if (typeof value == "object") {
//对象,判断是对象还是数组
if (value == null) {//为空
eachJson = eachJson + " " + key + "?: object\n";
} else {
//不为空
let objFirst = JSON.stringify(value).substring(0, 1);
let aCode = key.substring(0, 1).toUpperCase();
aCode = aCode + key.substring(1, key.length);
if (objFirst === "{") {
//对象,首先创建类名
let obj = " " + key + "?: " + aCode + "\n";
//只创建属性,对象需要单独创建
eachJson = eachJson + obj;
//这里创建一个单独的对象
temporaryObject = temporaryObject + "\nexport class " + aCode +
" {\n";
temporaryObject = temporaryObject +loopTraversalJson(value);
temporaryObject = temporaryObject + "}\n";
} else {
//数组
let obj = " " + key + "?: " + aCode + "[]\n";
//只创建属性,对象需要单独创建
eachJson = eachJson + obj;
//这里创建一个单独的对象
temporaryObject = temporaryObject + "\nexport class " + aCode +
" {\n";
temporaryObject = temporaryObject +loopTraversalJson(value[0]);
temporaryObject = temporaryObject + "}\n";
}
}
}
}
return eachJson;
}
插件版,使用的是java语言,和js的实现逻辑一样,有一点不一样的是,java版遍历json其value可能存在多种类型,比如,value有可能是Integer,或者Float或者Double,而转化之后,统一就是number。
if (value instanceof Integer || value instanceof Float || value instanceof Double) {
//统一就是 number
endJson = endJson + " " + key + "?:number\n";
} else if (value instanceof String) {
endJson = endJson + " " + key + "?:string\n";
} else if (value instanceof Boolean) {
endJson = endJson + " " + key + "?:boolean\n";
} else if (value.toString().equals("null")) {
endJson = endJson + " " + key + "?:object\n";
} else if (value instanceof JSONArray) {
String upperCaseK = key.substring(0, 1).toUpperCase() + key.substring(1);
endJson = endJson + " " + key + "?:" + upperCaseK + "[]\n";
forJsonValue(((JSONArray) value).getJSONObject(0), key);
}
三、相关总结
目前插件版已提交jetbrains插件市场,审核过后,大家搜索HarmonyJsonToObject就可以搜到,当然了,未审核过之前,大家完全可以按照本地jar包安装进行使用,效果是完全一样的。
大家在使用过程之后,如果发现问题,可以及时告知,也希望鸿蒙版的json转对象,可以帮助到更多的鸿蒙开发者。
最后
小编在之前的鸿蒙系统扫盲中,有很多朋友给我留言,不同的角度的问了一些问题,我明显感觉到一点,那就是许多人参与鸿蒙开发,但是又不知道从哪里下手,因为资料太多,太杂,教授的人也多,无从选择。有很多小伙伴不知道学习哪些鸿蒙开发技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?而且学习时频繁踩坑,最终浪费大量时间。所以有一份实用的鸿蒙(HarmonyOS NEXT)文档用来跟着学习是非常有必要的。
为了确保高效学习,建议规划清晰的学习路线,涵盖以下关键阶段:
→【纯血版鸿蒙全套最新学习文档】希望这一份鸿蒙学习文档能够给大家带来帮助~
鸿蒙(HarmonyOS NEXT)最新学习路线
该路线图包含基础技能、就业必备技能、多媒体技术、六大电商APP、进阶高级技能、实战就业级设备开发,不仅补充了华为官网未涉及的解决方案
路线图适合人群:
IT开发人员:想要拓展职业边界
零基础小白:鸿蒙爱好者,希望从0到1学习,增加一项技能。
技术提升/进阶跳槽:发展瓶颈期,提升职场竞争力,快速掌握鸿蒙技术
2.学习视频+学习PDF文档
HarmonyOS Next 最新全套视频教程 (鸿蒙语法ArkTS、TypeScript、ArkUI教程……)
纯血版鸿蒙全套学习文档(面试、文档、全套视频等)
鸿蒙APP开发必备
总结
总的来说,华为鸿蒙不再兼容安卓,对程序员来说是一个挑战,也是一个机会。只有积极应对变化,不断学习和提升自己,才能在这个变革的时代中立于不败之地。