HarmonyOS 利用 JSON解析与天生 的好处
一、轻量级与高效性
- 易于阅读和编写:JSON格式的数据易于人类阅读和编写,低落了数据处理的复杂性。
- 高效解析与天生:HarmonyOS的JSON解析库提供了一系列高效的函数和类,能够快速地将JSON字符串转换为JSON对象,或将JSON对象转换为JSON字符串,从而满意高效数据处理的需求。
二、机动的数据模型
- 层次化和嵌套的数据构造:JSON答应数据以层次化和嵌套的方式构造,这使得它能够适应各种复杂的数据结构。
- 支持多种数据类型:JSON中的值可以是字符串、数字、布尔值、数组、对象或null,这种机动性使得JSON能够表示多种类型的数据。
三、广泛的应用场景
- 跨平台数据互换:JSON作为一种通用的数据格式,可以在不同的操作系统、装备和编程语言之间举行数据互换,这使得HarmonyOS能够与其他系统或装备举行无缝的数据通信。
- 实用于多种应用:无论是前端开发、移动应用开发还是物联网装备,JSON都因其轻量级和易于处理的特点而被广泛应用。在HarmonyOS中,JSON同样被广泛应用于数据的传递和存储。
四、强盛的数据处理能力
- 数据访问与修改:通过解析JSON对象,可以方便地访问和修改此中的数据,进步了数据处理的机动性。
- 数据验证与校验:在JSON数据解析过程中,可以举行数据的验证和校验,确保吸取到的数据符合预期的格式和规则,从而进步了数据的准确性和可靠性。
五、安全性与稳固性
- 符合安全标准:HarmonyOS的JSON解析库在设计和实现过程中遵循了相关的安全标准和规范,确保了数据处理的安全性。
- 稳固可靠:经过严酷的测试和验证,HarmonyOS的JSON解析库具有高度的稳固性和可靠性,能够满意各种复杂应用场景的需求。
本模块实现了JSON文本的解析与天生功能:能够高效地将JSON格式的文本转换为相应的JavaScript对象或值,同时也支持将JavaScript对象序列化为标准的JSON字符串。
JSON解析与天生
1. JSON.parse ---- 解析JSON字符串
2. JSON.stringify ---- 转换为JSON字符串
3. JSON.has ---- 是否包罗
4. JSON.remove ---- 删除
1. JSON.parse
- parse(text: string, reviver?: Transformer, options?: ParseOptions): Object | null
复制代码
用于解析JSON字符串天生对应ArkTS对象或null。
参数:
参数名类型必填说明textstring是有用的JSON字符串。reviverTransformer否转换函数,传入该参数,可以用来修改解析天生的原始值。默认值是undefined。optionsParseOptions否解析的设置,传入该参数,可以用来控制解析天生的类型。默认值是undefined。 返回值:
类型说明Object | null 返回ArkTS对象或null。当入参是null时,返回null。
利用方式一:
传入有用的JSON字符串。
- let jsonText = '{"name": "John", "age": 30, "city": "ChongQing"}';
- let obj:object = JSON.parse(jsonText);
- console.info((obj as object)?.["name"]); // 输出 John
复制代码 输出:
输出效果:John
利用方式二:
转换函数,传入该参数,可以用来修改解析天生的原始值
- function reviverFunc(key, value) {
- if (key === "age") {
- return value + 1;
- }
- return value;
- }
- const jsonTextStr = '{"name": "John", "age": 30}';
- let objRst:object = JSON.parse(jsonTextStr, reviverFunc);
- console.info((objRst as object)?.["age"]); // 打印结果:31
复制代码 输出:
输出效果:31
利用方式三:
解析的设置,传入该参数,可以用来控制解析天生的类型
- let options: JSON.ParseOptions = {
- bigIntMode: JSON.BigIntMode.PARSE_AS_BIGINT,
- }
- let numberText = '{"largeNumber":11223344556677889911111}';
- let numberObj = JSON.parse(numberText,
- (key: string, value: string):Object | null => {
- if(key === "largeNumber"){
- console.info("password",value+"");
- return value;
- }
- return value;
- },options);
- console.info((numberObj as object)?.["largeNumber"]);
- // 打印结果: 11223344556677889911111
复制代码
输出:
输出效果:11223344556677889911111
2. JSON.stringify
- stringify(value: Object, replacer?: (number | string)[] | null, space?: string | number): string
复制代码
该方法将一个ArkTS对象或数组转换为JSON字符串,对于容器支持线性容器转换,非线性的容器不支持。
参数:
参数名类型必填说明valueObject是ArkTS对象或数组,对于容器支持线性容器转换,非线性的容器不支持。replacernumber[] | string[] | null否当参数是数组时,只有包罗在这个数组中的属性名才会被序列化到终极的JSON字符串中;当参数为null或者未提供时,则对象所有的属性都会被序列化。默认值是undefined。spacestring | number否指定缩进用的空格或字符串或空字符串,用于美化输出。当参数是数字时表示有多少个空格;当参数是字符串时,该字符串被看成空格;当参数没有提供时,将没有空格。默认值是空字符串。 返回值:
类型说明string转换后的JSON字符串。
利用方式一:
ArkTS对象或数组,对于容器支持线性容器转换,非线性的容器不支持。
- let arr = [1, 2];
- let rstArrStr = JSON.stringify(exportObj, arr);
- console.info(rstArrStr);
- // 打印结果:"{"1":"John","2":30}"
复制代码
输出:
输出效果:{"1":"John","2":30}
利用方式二:
当参数是数组时,只有包罗在这个数组中的属性名才会被序列化到终极的JSON字符串中;当参数为null或者未提供时,则对象所有的属性都会被序列化
- interface Person {
- name: string;
- age: number;
- city: string;
- }
- let inputObj = {"name": "John", "age": 30, "city": "ChongQing"} as Person;
- let rstStr = JSON.stringify(inputObj, ["name"]);
- console.info("rstStr",rstStr);
- // 打印结果:"{"name":"John"}"
复制代码
输出:
输出效果:"{"name":"John"}"
利用方式三:
指定缩进用的空格或字符串或空字符串,用于美化输出。当参数是数字时表示有多少个空格;当参数是字符串时,该字符串被看成空格;当参数没有提供时,将没有空格
- interface Person {
- name: string;
- age: number;
- city: string;
- }
- let rstStrSpace = JSON.stringify(inputObj, ["name"], ' ');
- console.info(rstStrSpace);
- // 打印结果:
- /*
- "{
- "name": "John"
- }"
- */
- let rstStrStar = JSON.stringify(inputObj, ["name"], '&&');
- console.info(rstStrStar);
- // 打印结果:
- /*
- "{
- &&"name": "John"
- }"
- */
复制代码
3. JSON.has
- has(obj: object, property: string): boolean
复制代码
查抄ArkTS对象是否包罗某种属性,可用于JSON.parse解析JSON字符串之后的相关操作。has接口仅支持最外层为字典情势(即大括号而非中括号包围)的合法json串。
参数:
参数名类型必填说明objobject是ArkTS对象。propertystring是属性名。 返回值:
类型说明boolean返回ArkTS对象是否包罗某种属性效果,true表示包罗,false表示不包罗。 利用方式:
- const jsonText = '{"name": "John", "age": 30, "city": "ChongQing"}';
- let inputObj = JSON.parse(jsonText);
- let rstflag = JSON.has(inputObj, "name");
- console.info("rstflag = " + rstflag);
- // 打印结果:rstflag = true
复制代码 输出:
输出效果:rstflag = true
4. JSON.remove
- remove(obj: object, property: string): void
复制代码 从ArkTS对象中删除某种属性,可用于JSON.parse解析JSON字符串之后的相关操作。remove接口仅支持最外层为字典情势(即大括号而非中括号包围)的合法json串。
参数:
参数名类型必填说明objobject是ArkTS对象。propertystring是属性名。 利用方式:
- const jsonText = '{"name": "John", "age": 30, "city": "ChongQing"}';
- let inputObj = JSON.parse(jsonText);
- JSON.remove(inputObj, "name");
- let rstflag = JSON.has(inputObj, "name");
- console.info("rstflag = " + rstflag);
- // 打印结果:rstflag = false
复制代码 输出:
输出效果:rstflag = false
还有其他问题 请参考官方文档
制作不易 点个关注再走吧。°(°¯᷄◠¯᷅°)°。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |