DevEco Studio-Cangjie Plugin 6.0.2 如何解析JSON为对象
DevEco Studio-Cangjie Plugin 6.0.2 如何解析JSON为对象 版本更新DevEco Studio-Cangjie Plugin 6.0.2后变化太大了,文档中也没找到serialization、encoding.json这些相关的文档,不知道怎么解析json了
引入stdx就可以正常使用了,net、log 等库已从仓颉 SDK 移到 stdx 模块,使用前需要下载软件包,并在 cjpm.toml 中配置。
怎么申请通过的?我的还在审核中
希望HarmonyOS能继续推出更多实用的功能,满足用户的不同需求。
不清楚,周一上班发现有新版本就装了,
是下载中心那里有仓颉插件的新版本吗?我这儿还只能看到旧的,
你着急的话提个工单试试,
在 DevEco Studio 的 Cangjie Plugin 6.0.2 版本(对应 HarmonyOS NEXT API 12/13 附近)中,确实发生了重大变更。官方不再推荐使用旧的 JSON.stringify / JSON.parse 进行复杂对象的深拷贝或序列化,而是主推使用 @ohos.serialization 模块配合 装饰器 来实现类型安全的 JSON 解析。
有要学HarmonyOS AI的同学吗,联系我:https://www.itying.com/goods-1206.html
@ohos.serialization 是arkts的吗仓颉没有了吗,
应用配置文件(Stage模型)
每个应用项目必须在项目的代码目录下加入配置文件,这些配置文件会向编译工具、操作系统和应用市场提供应用的基本信息。
在基于Stage模型开发的应用项目代码下,都存在一个app.json5应用配置文件,和module.json5模块配置文件。
App.json5配置文件
app.json5包含应用的全局配置信息,包含应用的包名、开发厂商、版本号等基本信息。
| 属性 | 含义 | 数据类型 | 是否可缺省 |
|---|---|---|---|
| bundleName | 包名,用于标识应用的唯一性。 | 字符串 | 否 |
| vendor | 应用开发厂商名称。 | 字符串 | 可缺省,缺省值为空。 |
| versionCode | 用于标识应用的版本号,该版本号为32位非负整数。 | 数值 | 否 |
| versionName | 版本号文字描述,用于向用户展示。 | 字符串 | 否 |
| minAPIVersion | 支持运行的最小API版本。 | 数值 | 否 |
| targetAPIVersion | 目标API版本。 | 数值 | 否 |
| apiReleaseType | 目标API版本的类型,采用字符串类型表示。取值为“CanaryN”、“BetaN”或者“Release”,其中N代表大于零的整数。 | 字符串 | 可缺省,缺省值为空。 |
| icon | 应用图标,标签值为图标资源文件的索引。 | 字符串 | 可缺省,缺省值为空。 |
| label | 应用名,标签值为应用名资源文件的索引。 | 字符串 | 可缺省,缺省值为空。 |
| description | 应用描述,标签值为描述资源文件的索引。 | 字符串 | 可缺省,缺省值为空。 |
| distributedNotificationEnabled | 标识应用是否支持分布式通知。 | 布尔值 | 可缺省,缺省值为false。 |
| minCompatibleVersionCode | 可兼容的最低历史版本号,用于跨设备兼容性判断。 | 数值 | 可缺省,缺省值为versionCode的值。 |
示例:
{
"app": {
"bundleName": "com.example.myapplication",
"vendor": "example",
"versionCode": 1000000,
"versionName": "1.0.0",
"icon": "$media:app_icon",
"label": "$string:app_name",
"description": "$string:description",
"minAPIVersion": 9,
"targetAPIVersion": 9,
"apiReleaseType": "Release",
"distributedNotificationEnabled": true,
"minCompatibleVersionCode": 1000000
}
}
Module.json5配置文件
module.json5包含对应模块的配置信息,包含模块名、模块类型、模块描述、支持的设备类型、模块的编译构建信息、运行时权限信息等。
| 属性 | 含义 | 数据类型 | 是否可缺省 |
|---|---|---|---|
| module | 标识当前Module的属性。 | 对象 | 否 |
| module.name | 当前Module的名称,在应用内保证唯一性。 | 字符串 | 否 |
| module.type | 当前Module的类型,类型有三种:entry、feature和har。 | 字符串 | 否 |
| module.description | 当前Module的描述。 | 字符串 | 可缺省,缺省值为空。 |
| module.mainElement | 当前Module的入口。 | 字符串 | 对于entry类型Module,不可缺省;对于feature和har类型Module,可缺省。 |
| module.deviceTypes | 当前Module支持的设备类型。 | 字符串数组 | 否 |
| module.deliveryWithInstall | 当前Module是否在用户主动安装的时候安装,表示该Module对应的HAP是否跟随应用一起安装。 | 布尔值 | 否 |
| module.installationFree | 当前Module是否支持免安装特性。 | 布尔值 | 否 |
| module.pages | 对应Ability的页面信息,为配置文件中Page信息的资源索引。 | 字符串 | 对于entry类型Module,不可缺省;对于feature和har类型Module,可缺省。 |
| module.abilities | 当前Module中所有的Ability。 | 对象数组 | 可缺省,缺省值为空。 |
| module.requestPermissions | 当前Module运行时需向系统申请的权限集合。 | 对象数组 | 可缺省,缺省值为空。 |
| module.definePermissions | 当前Module自定义的权限信息。 | 对象数组 | 可缺省,缺省值为空。 |
示例:
{
"module": {
"name": "entry",
"type": "entry",
"description": "$string:module_desc",
"mainElement": "EntryAbility",
"deviceTypes": [
"phone"
],
"deliveryWithInstall": true,
"installationFree": false,
"pages": "$profile:main_pages",
"abilities": [
{
"name": "EntryAbility",
"srcEntry": "./ets/entryability/EntryAbility.ts",
"description": "$string:EntryAbility_desc",
"icon": "$media:icon",
"label": "$string:EntryAbility_label",
"startWindowIcon": "$media:icon",
"startWindowBackground": "$color:start_window_background",
"exported": true,
"skills": [
{
"entities": [
"entity.system.home"
],
"actions": [
"action.system.home"
]
}
]
}
],
"requestPermissions": [
{
"name": "ohos.permission.DISTRIBUTED_DATASYNC"
}
],
"definePermissions": [
{
"name": "ohos.myability.permission.PROVIDER",
"grantMode": "system_grant",
"availableScope": [
"signature"
],
"label": "$string:define_permissions_label",
"description": "$string:define_permissions_description"
}
]
}
}
在DevEco Studio-Cangjie Plugin 6.0.2中,JSON解析方式已更新。推荐使用[@ohos](/user/ohos).util模块下的JSON类进行解析,替代原有的serialization和encoding.json。
具体方法如下:
-
导入模块:
import JSON from '[@ohos](/user/ohos).util.JSON'; -
解析JSON字符串为对象:
let jsonString = '{"name": "John", "age": 30}'; let jsonObj = JSON.parse(jsonString); console.log(jsonObj.name); // 输出: John -
将对象转换为JSON字符串:
let obj = { name: "John", age: 30 }; let jsonString = JSON.stringify(obj); console.log(jsonString); // 输出: {"name":"John","age":30}
该API符合HarmonyOS Next的标准化设计,使用方式与ECMAScript标准一致,无需额外学习成本。


