鸿蒙三方库 | harmony-utils之JSONUtil JSON解析与转换详解
2026/7/28 20:55:42 网站建设 项目流程

前言

JSON是现代应用中最常用的数据交换格式,@pura/harmony-utilsJSONUtil封装了JSON解析和转换方法,提供了比原生JSON更安全便捷的操作。本文将从API说明、代码实战、进阶用法、常见问题等多个维度进行全面讲解,帮助开发者快速掌握并应用到实际项目中。

一、JSONUtil核心API

JSONUtil提供了以下JSON操作方法:

方法说明返回类型使用场景
parse(str)安全解析JSONObject数据解析
stringify(obj)安全序列化string数据传输
parseArray(str)解析JSON数组T[]列表解析
getString(obj, key)安全获取字符串string属性读取
getNumber(obj, key)安全获取数字number属性读取
getBoolean(obj, key)安全获取布尔值boolean属性读取

1.1 核心特性

  • 简洁易用:封装复杂逻辑为一行调用,降低使用门槛
  • 类型安全:完整的TypeScript类型定义,编译期即可发现错误
  • 异常处理:安全解析不会因格式错误导致崩溃
  • 安全取值:getString/getNumber/getBoolean避免空指针

1.2 JSONUtil与原生JSON对比

特性原生JSONJSONUtil
解析异常抛出异常安全返回null
类型获取需手动判断提供类型方法
数组解析需类型断言专用方法
空值处理undefined默认值

二、完整使用步骤

2.1 安装依赖

ohpminstall@pura/harmony-utils

2.2 安全解析JSON

import{JSONUtil}from'@pura/harmony-utils';Button('安全解析JSON').width('100%').onClick(()=>{try{letjson='{"name":"张三","age":25}';letobj=JSONUtil.parse(json);this.result=`解析成功 ✅\nname:${obj.name}\nage:${obj.age}`;}catch(e){this.result='解析失败: '+e;}})

2.3 安全获取属性

Button('安全获取属性').width('100%').onClick(()=>{try{letobj={name:'张三',age:25,active:true};letname=JSONUtil.getString(obj,'name');letage=JSONUtil.getNumber(obj,'age');letactive=JSONUtil.getBoolean(obj,'active');this.result=`name:${name}\nage:${age}\nactive:${active}`;}catch(e){this.result='异常: '+e;}})

三、完整页面示例

import{JSONUtil}from'@pura/harmony-utils';@Entry@Componentstruct JsonDemo{@Stateresult:string='';build(){Column({space:12}){Button('安全解析').width('100%').onClick(()=>{letobj=JSONUtil.parse('{"name":"张三","age":25}');this.result=obj?`name:${obj.name}`:'解析失败';});Button('安全取值').width('100%').onClick(()=>{letdata={name:'李四',score:95};this.result=`name:${JSONUtil.getString(data,'name')}\nscore:${JSONUtil.getNumber(data,'score')}`;});Text(this.result).fontSize(14).fontColor('#333333')}.padding(16)}}

四、进阶用法

4.1 API响应处理

import{JSONUtil}from'@pura/harmony-utils';functionhandleApiResponse(response:string):UserInfo|null{letobj=JSONUtil.parse(response);if(!obj)returnnull;return{name:JSONUtil.getString(obj,'name'),age:JSONUtil.getNumber(obj,'age'),active:JSONUtil.getBoolean(obj,'active'),};}

4.2 配置文件读取

functionloadConfig(jsonStr:string):AppConfig{letobj=JSONUtil.parse(jsonStr)||{};return{theme:JSONUtil.getString(obj,'theme')||'light',fontSize:JSONUtil.getNumber(obj,'fontSize')||14,};}

五、注意事项

  1. 安全解析:parse方法对无效JSON安全返回null
  2. 类型转换:getString等方法会尝试类型转换
  3. 默认值:属性不存在时返回类型的默认值
  4. 初始化依赖:使用前需确保AppUtil.init()已调用
  5. 嵌套对象:安全取值只支持一级属性

六、常见问题

Q1: parse解析失败返回什么?

安全解析失败返回null,不会抛出异常。

Q2: getString对数字属性返回什么?

会尝试将数字转为字符串,如 25 返回 “25”。

Q3: parseArray支持泛型吗?

支持,可以指定数组元素类型。

Q4: 如何获取嵌套对象的属性?

需要先获取外层对象,再逐层取值。


总结

JSONUtil的JSON解析和转换方法为数据处理提供了安全便捷的支持。本文详细介绍了核心API、使用步骤、完整示例、进阶用法以及常见问题的解决方案。开发者可以利用这些方法安全地解析JSON和获取属性值。

本文基于@pura/harmony-utils工具库,更多功能请参考官方文档与后续系列文章。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询