反序列化JSON应用示例
介绍
本示例通过[ArkUI-X] Entry Ability模版创建的一个工程,实现使用不同的第三方库反序列化json字符串,可通过点击Button按钮反序列化JSON字符串展示内容。
效果预览
| Android平台 | iOS平台 | 鸿蒙平台 |
|---|---|---|
![]() |
![]() |
![]() |
| Android平台 | iOS平台 | 鸿蒙平台 |
![]() |
![]() |
![]() |
使用说明
1、打开应用,首页面展示可以使用的反序列化工具单选按钮:GSON库、原生JS;以及需要反序列化的内容选择按钮:自定义数据、查看示例。
2、选择反序列化工具后,点击示例数据或自定义数据
-
点击查看示例
使用序列化按钮,可以将JSON字符串格式化后的内容展示在页面上,不同页签可以点击或者通过滑动进行切换。
使用反序列化按钮,可以将JSON字符串反序列化后的结果展示在页面上。
-
点击自定义数据
在文本框中输入标准格式的JSON字符串,点击序列化按钮,可以将JSON字符串序列化后的内容展示在页面上。
点击反序列化按钮,可以将JSON字符串反序列化后的结果展示在页面上。
输入错误格式的JSON字符串会有相关提示。
工程目录
entry/src/main/ets
|---beans // json实体类
| |---ComplicatedObject.ets
| |---SimpleObject.ets
| |---TabsBean.ets
|---components
| |---JSONParseContent.ets // json反序列化
| |---JSONStrContent.ets // json序列化
| |---MyTabs.ets // 序列化和反序列化容器组件
|---datasource // LazyForEach数据源
| |---BasicData.ets
| |---ComplicatedData.ets
| |---SimpleData.ets
|---entryability
| |---EntryAbility.ets
| |---EntryAbility.ts
|---gson
| |---internal
| | |---bind // json输入输出调用接口
| | | |---jsonTreeReader.ts
| | | |---jsonTreeWriter.ts
| | | |---typeAdapters.ts
| | |---streams.ts
| |---lang // gson工具类
| | |---appendable.ts
| | |---gsonIterator.ts
| | |---stringBuilder.ts
| | |---stringReader.ts
| |---stream // 解析json输入输出流
| | |---jsonReader.ts
| | |---jsonReplace.ts
| | |---jsonScope.ts
| | |---jsonToken.ts
| | |---jsonWriter.ts
| |---gson.ts // gson工具类
| |---gsonBuilder.ts // gson构造器
| |---index.ts // 导出模块,提供调用入口
| |---jsonArray.ts // json数组工具类
| |---jsonElement.ts // json复制工具类
| |---jsonNull.ts // 空json构造器
| |---jsonObject.ts // json构造器
| |---jsonParser.ts // json解析阅读器
| |---jsonPrimitive.ts // 反序列化json工具类
| |---typeAdapter.ts // 类型适配器
| |---utils.ts
|---pages
| |---CustomerExample.ets // 自定义数据并反序列化页面
| |---Index.ets // json反序列化首页
| |---JsonExample.ets // 反序列化示例页面
|---util
| |---ConvertJSON.ts // 解析json字符串工具类
| |---Formatter.ts // 构造数组类型和对象类型的文本内容工具类
| |---Index.ts // 判断数据的类型是否是数组或基础数据类型工具类
具体实现
- 首页封装在Index,源码参考:Index.ets
- 点击示例页面按钮后进入示例页面JsonExample.ets,示例页面中每个tab对应一个示例。
- 如果选择的是gson-ts,则会使用gson的工具类ConvertJSON.ts中的fromJsonObject()函数进行序列化或反序列化。
- 如果选择的是原生js,则会使用js工具类ConvertJSON.ts中的convertObjData()函数进行序列化或反序列化。
- 点击自定义数据,跳转到CustomerExample.ets页面。
- 如果选择的是gson-ts,输入字符串并点击序列化,则会调用JSONStrContent.ets组件,在JSONStrContent组件的aboutToAppear()初始化函数中,调用fromJsonObject()函数序列化或反序列化,并将序列化结果显示到页面中。
- 如果选择的是原生js,输入字符串并点击序列化,则会调用JSONParseContent.ets组件,在JSONParseContent组件的aboutToAppear()初始化函数中,调用convertObjData()函数序列化或反序列化,并将序列化结果显示到页面中。
相关权限
不涉及
依赖
不涉及
约束与限制
1.本示例仅支持标准Android/iOS/鸿蒙系统上运行。
2.本示例已适配API version 12版本的ArkUI-X SDK,版本号:2.0.0.27及以上。
3.本示例需要使用DevEco Studio 5.0 Beta1 (Build Version: 5.0.3.403, built on June 21, 2024)及以上版本才可编译运行。
下载
如需单独下载本工程,执行如下命令:
git init
git config core.sparsecheckout true
echo /JsonExample > .git/info/sparse-checkout
git remote add origin https://gitcode.com/arkui-x/samples.git
git pull origin master





