【HarmonyOS NEXT】鸿蒙JSON解析与生成

本模块提供了将JSON文本转换为JSON对应对象或值,以及将对象转换为JSON字符串等功能。

导入模块


import { JSON } from '@kit.ArkTS';

Transformer

type Transformer = (this: Object, key: string, value: Object) => Object | undefined | null

用于转换结果函数的类型。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
thisObject在解析的键值对所属的对象。
keystring属性名。
valueObject在解析的键值对的值。

返回值:

类型说明
Object | undefined | null返回修改后的对象或undefined或null。

JSON.parse

parse(text: string, reviver?: Transformer): Object | null

用于解析JSON字符串生成对应ArkTS对象或null。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
textstring有效的JSON字符串。
reviverTransformer转换函数,传入该参数,可以用来修改解析生成的原始值。默认值是undefined。

返回值:

类型说明
Object | null返回ArkTS对象或null。当入参是null时,返回null。

错误码:

错误码ID错误信息
401Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.

示例:


let jsonText = '{"name": "John", "age": 30, "city": "ChongQing"}';
let obj = JSON.parse(jsonText);

JSON.stringify

stringify(value: Object, replacer?: (number | string)[] | null, space?: string | number): string

该方法将一个ArkTS对象或数组转换为JSON字符串。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
valueObjectArkTS对象或数组。
replacernumber[] | string[] | null当参数是数组时,只有包含在这个数组中的属性名才会被序列化到最终的JSON字符串中;当参数为null或者未提供时,则对象所有的属性都会被序列化。默认值是undefined。
spacestring | number指定缩进用的空格或字符串或空字符串,用于美化输出。当参数是数字时表示有多少个空格;当参数是字符串时,该字符串被当作空格;当参数没有提供时,将没有空格。默认值是空字符串。

返回值:

类型说明
string转换后的JSON字符串。

错误码:

错误码ID错误信息
401Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.

示例:


interface Person {
name: string;
age: number;
city: string;
}
let obj = {"name": "John", "age": 30, "city": "ChongQing"} as Person;
let str1 = JSON.stringify(obj, ["name"]);

JSON.stringify

stringify(value: Object, replacer?: Transformer, space?: string | number): string

该方法将一个ArkTS对象或数组转换为JSON字符串。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
valueObjectArkTS对象或数组。
replacerTransformer在序列化过程中,被序列化的值的每个属性都会经过该函数的转换和处理。默认值是undefined。
spacestring | number指定缩进用的空格或字符串或空字符串,用于美化输出。当参数是数字时表示有多少个空格;当参数是字符串时,该字符串被当作空格;当参数没有提供时,将没有空格。默认值是空字符串。

返回值:

类型说明
string转换后的JSON字符串。

错误码:

错误码ID错误信息
401Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.

示例:


function replacer(key: string, value: Object): Object {
if (typeof value === "string") {
return value.toUpperCase();
}
return value;
}
interface Person {
name: string;
age: number;
city: string;
}

let obj = {"name": "John", "age": 30, "city": "ChongQing"} as Person;
let str2 = JSON.stringify(obj, replacer);

JSON.has

has(obj: object, property: string): boolean

检查ArkTS对象是否包含某种属性,可用于JSON.parse解析JSON字符串之后的相关操作。has接口仅支持最外层为字典形式(即大括号而非中括号包围)的合法json串。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
objobjectArkTS对象。
propertystring属性名。

返回值:

类型说明
boolean返回ArkTS对象是否包含某种属性结果,true表示包含,false表示不包含。

错误码:

错误码ID错误信息
401Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.

示例:


const jsonText = '{"name": "John", "age": 30, "city": "ChongQing"}';
let obj = JSON.parse(jsonText);
let rst = JSON.has(obj, "name");

JSON.remove

remove(obj: object, property: string): void

从ArkTS对象中删除某种属性,可用于JSON.parse解析JSON字符串之后的相关操作。remove接口仅支持最外层为字典形式(即大括号而非中括号包围)的合法json串。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
objobjectArkTS对象。
propertystring属性名。

错误码:

错误码ID错误信息
401Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.

示例:


const jsonText = '{"name": "John", "age": 30, "city": "ChongQing"}';
let obj = JSON.parse(jsonText);
let rst = JSON.remove(obj, "name");
  • 12
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ConneyWu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值