HarmonyOS JSON解析与天生 常用的几个方法

打印 上一主题 下一主题

主题 1007|帖子 1007|积分 3021

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

  
  1. 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字符串。
  1. let jsonText = '{"name": "John", "age": 30, "city": "ChongQing"}';
  2. let obj:object = JSON.parse(jsonText);
  3. console.info((obj as object)?.["name"]);  // 输出 John
复制代码
输出:
    输出效果:John
  
利用方式二:

   转换函数,传入该参数,可以用来修改解析天生的原始值
   
  1. function reviverFunc(key, value) {
  2.   if (key === "age") {
  3.     return value + 1;
  4.   }
  5.   return value;
  6. }
  7. const jsonTextStr = '{"name": "John", "age": 30}';
  8. let objRst:object = JSON.parse(jsonTextStr, reviverFunc);
  9. console.info((objRst as object)?.["age"]);  // 打印结果:31
复制代码
输出:
    输出效果:31
  
利用方式三:

   解析的设置,传入该参数,可以用来控制解析天生的类型
   
  1. let options: JSON.ParseOptions = {
  2.               bigIntMode: JSON.BigIntMode.PARSE_AS_BIGINT,
  3.             }
  4.             let numberText = '{"largeNumber":11223344556677889911111}';
  5.             let numberObj = JSON.parse(numberText,
  6.               (key: string, value: string):Object | null => {
  7.               if(key === "largeNumber"){
  8.                 console.info("password",value+"");
  9.                 return value;
  10.               }
  11.               return value;
  12.             },options);
  13.             console.info((numberObj as object)?.["largeNumber"]);
  14.             // 打印结果: 11223344556677889911111
复制代码

  输出:
   输出效果:11223344556677889911111
  
2. JSON.stringify

  
  1. 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对象或数组,对于容器支持线性容器转换,非线性的容器不支持。
   
  1. let arr = [1, 2];
  2. let rstArrStr = JSON.stringify(exportObj, arr);
  3. console.info(rstArrStr);
  4. // 打印结果:"{"1":"John","2":30}"
复制代码

  输出:
    输出效果:{"1":"John","2":30}
  
 利用方式二:

   当参数是数组时,只有包罗在这个数组中的属性名才会被序列化到终极的JSON字符串中;当参数为null或者未提供时,则对象所有的属性都会被序列化
   
  1. interface Person {
  2.     name: string;
  3.     age: number;
  4.     city: string;
  5. }
  6. let inputObj = {"name": "John", "age": 30, "city": "ChongQing"} as Person;
  7. let rstStr = JSON.stringify(inputObj, ["name"]);
  8. console.info("rstStr",rstStr);
  9. // 打印结果:"{"name":"John"}"
复制代码

  输出:
    输出效果:"{"name":"John"}"
  
 利用方式三:

   指定缩进用的空格或字符串或空字符串,用于美化输出。当参数是数字时表示有多少个空格;当参数是字符串时,该字符串被看成空格;当参数没有提供时,将没有空格
   
  1. interface Person {
  2.     name: string;
  3.     age: number;
  4.     city: string;
  5. }
  6. let rstStrSpace = JSON.stringify(inputObj, ["name"], '  ');
  7. console.info(rstStrSpace);
  8. // 打印结果:
  9. /*
  10. "{
  11.   "name": "John"
  12. }"
  13. */
  14. let rstStrStar = JSON.stringify(inputObj, ["name"], '&&');
  15. console.info(rstStrStar);
  16. // 打印结果:
  17. /*
  18. "{
  19. &&"name": "John"
  20. }"
  21. */
复制代码

  
3. JSON.has

  
  1. has(obj: object, property: string): boolean
复制代码

    查抄ArkTS对象是否包罗某种属性,可用于JSON.parse解析JSON字符串之后的相关操作。has接口仅支持最外层为字典情势(即大括号而非中括号包围)的合法json串。
  参数:
参数名类型必填说明objobject是ArkTS对象。propertystring是属性名。 返回值:
类型说明boolean返回ArkTS对象是否包罗某种属性效果,true表示包罗,false表示不包罗。 利用方式:

  
  1. const jsonText = '{"name": "John", "age": 30, "city": "ChongQing"}';
  2. let inputObj = JSON.parse(jsonText);
  3. let rstflag = JSON.has(inputObj, "name");
  4. console.info("rstflag = " + rstflag);
  5. // 打印结果:rstflag = true
复制代码
输出:
    输出效果:rstflag = true
  

4. JSON.remove

  
  1. remove(obj: object, property: string): void
复制代码
   从ArkTS对象中删除某种属性,可用于JSON.parse解析JSON字符串之后的相关操作。remove接口仅支持最外层为字典情势(即大括号而非中括号包围)的合法json串。
  参数:
参数名类型必填说明objobject是ArkTS对象。propertystring是属性名。 利用方式:

  
  1. const jsonText = '{"name": "John", "age": 30, "city": "ChongQing"}';
  2. let inputObj = JSON.parse(jsonText);
  3. JSON.remove(inputObj, "name");
  4. let rstflag = JSON.has(inputObj, "name");
  5. console.info("rstflag = " + rstflag);
  6. // 打印结果:rstflag = false
复制代码
输出:
    输出效果:rstflag = false
  
 还有其他问题 请参考官方文档
制作不易 点个关注再走吧。°(°¯᷄◠¯᷅°)°。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

科技颠覆者

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表