鸿蒙三方库 | harmony-utils之JSONUtil JSON解析与转换详解
📅 2026/7/28 20:55:47
👁️ 次浏览
前言JSON是现代应用中最常用的数据交换格式pura/harmony-utils的JSONUtil封装了JSON解析和转换方法提供了比原生JSON更安全便捷的操作。本文将从API说明、代码实战、进阶用法、常见问题等多个维度进行全面讲解帮助开发者快速掌握并应用到实际项目中。一、JSONUtil核心APIJSONUtil提供了以下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 安装依赖ohpminstallpura/harmony-utils2.2 安全解析JSONimport{JSONUtil}frompura/harmony-utils;Button(安全解析JSON).width(100%).onClick((){try{letjson{name:张三,age:25};letobjJSONUtil.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};letnameJSONUtil.getString(obj,name);letageJSONUtil.getNumber(obj,age);letactiveJSONUtil.getBoolean(obj,active);this.resultname:${name}\nage:${age}\nactive:${active};}catch(e){this.result异常: e;}})三、完整页面示例import{JSONUtil}frompura/harmony-utils;EntryComponentstruct JsonDemo{Stateresult:string;build(){Column({space:12}){Button(安全解析).width(100%).onClick((){letobjJSONUtil.parse({name:张三,age:25});this.resultobj?name:${obj.name}:解析失败;});Button(安全取值).width(100%).onClick((){letdata{name:李四,score:95};this.resultname:${JSONUtil.getString(data,name)}\nscore:${JSONUtil.getNumber(data,score)};});Text(this.result).fontSize(14).fontColor(#333333)}.padding(16)}}四、进阶用法4.1 API响应处理import{JSONUtil}frompura/harmony-utils;functionhandleApiResponse(response:string):UserInfo|null{letobjJSONUtil.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{letobjJSONUtil.parse(jsonStr)||{};return{theme:JSONUtil.getString(obj,theme)||light,fontSize:JSONUtil.getNumber(obj,fontSize)||14,};}五、注意事项安全解析parse方法对无效JSON安全返回null类型转换getString等方法会尝试类型转换默认值属性不存在时返回类型的默认值初始化依赖使用前需确保AppUtil.init()已调用嵌套对象安全取值只支持一级属性六、常见问题Q1: parse解析失败返回什么安全解析失败返回null不会抛出异常。Q2: getString对数字属性返回什么会尝试将数字转为字符串如 25 返回 “25”。Q3: parseArray支持泛型吗支持可以指定数组元素类型。Q4: 如何获取嵌套对象的属性需要先获取外层对象再逐层取值。总结JSONUtil的JSON解析和转换方法为数据处理提供了安全便捷的支持。本文详细介绍了核心API、使用步骤、完整示例、进阶用法以及常见问题的解决方案。开发者可以利用这些方法安全地解析JSON和获取属性值。本文基于pura/harmony-utils工具库更多功能请参考官方文档与后续系列文章。
前言
对象拷贝和合并是开发中的常见操作,深拷贝避免引用共享,对象合并实现配置叠加。pura/harmony-utils 的 ObjectUtil 封装了对象拷贝和合并方法。本文将从API说明、代码实战、进阶用法、常见问题等多个维度进行全面讲解,帮助开发者快速掌…
📅 2026/7/28 20:55:47
1. 项目概述医院挂号管理系统是医疗信息化建设中的核心应用之一。这个基于SpringBootVue技术栈实现的系统,旨在解决传统医院挂号流程中的三大痛点:窗口排队时间长、号源分配不透明、就诊信息不互通。我在实际开发中发现,一个设计良好的挂号系…
📅 2026/7/28 20:54:47
这次我们来看一个面向初学者的神经网络原理与实战速成内容。标题虽然带有“10分钟动画讲解”的营销感,但其核心价值在于将GNN、RNN、GAN、CNN、Transformer这五大主流神经网络架构的原理与实战进行系统性串联。对于刚入门AI、被各种缩写搞晕的开发者来说,这种对比学习能快速建…
📅 2026/7/28 20:54:47
暗黑模式适配安卓Q的暗黑模式适配是指应用在系统设置中开启Dark Theme后,自动切换为黑色背景与白色文字的显示模式。暗黑模式的核心功能是降低屏幕亮度减少夜间使用时的视觉刺激,适配关键要素包括背景色、文字颜色和图标颜色的调整。1.为什么要适配暗黑模…
📅 2026/7/29 1:17:28
抖音批量下载终极指南:5分钟学会无水印视频批量保存 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support…
📅 2026/7/29 1:17:28
国产AI电商营销工具选型核心标准国产AI电商营销工具在数据安全、国内电商场景适配、服务响应速度、成本控制方面均有显著优势,适配国内绝大多数电商商家的内容生产需求选型核心维度权重可按数据安全30%、场景适配30%、性价比25%、服务支持15%设置,优先匹…
📅 2026/7/29 1:17:28
CoreCycler终极指南:如何精准测试CPU单核心稳定性的5大关键步骤 【免费下载链接】corecycler Script to test single core stability, e.g. for PBO & Curve Optimizer on AMD Ryzen or overclocking/undervolting on Intel processors 项目地址: https://git…
📅 2026/7/29 1:17:28
核心速览
本文拆解AI电商创作平台选型四大陷阱,从品牌背书、功能真实性等维度对比国内主流平台表现,覆盖不同规模电商商家、品牌方、MCN机构的素材生产需求依托360集团技术生态的纳米P视频在性价比、批量出片能力上表现突出,是中小电商商家降…
📅 2026/7/29 1:17:28
1. 为什么物联网设备需要专用安全芯片?在智能家居和工业物联网项目中,开发者常面临一个两难选择:使用通用MCU虽然成本低,但安全防护薄弱;采用高端安全方案又会导致BOM成本飙升。这正是SE050 Plug&Trust安全元件与P…
📅 2026/7/29 1:16:28
解密Seq的核心功能:如何利用Pipeline实现高效基因组数据处理 【免费下载链接】seq A high-performance, Pythonic language for bioinformatics 项目地址: https://gitcode.com/gh_mirrors/se/seq
Seq作为一款高性能的生物信息学专用语言,其Pipel…
📅 2026/7/29 0:00:00
Flask-Blogging插件开发指南:打造属于你的个性化博客功能 【免费下载链接】Flask-Blogging A Markdown Based Python Blog Engine as a Flask Extension. 项目地址: https://gitcode.com/gh_mirrors/fl/Flask-Blogging
Flask-Blogging是一个基于Markdown的Py…
📅 2026/7/29 0:00:00
近日,国际专注开放式技术研发的声学品牌Nank南卡,正式官宣实力艺人曾舜晞担任品牌代言人。消息一经发出便轰动全网。为什么耳机品牌不选择流量明星、老牌歌手?而且是选择曾舜晞?让我们一起来探索一下!比起短期的流量&a…
📅 2026/7/29 0:01:00
更多请点击:
https://codechina.net
第一章:AI帮助理解数学概念 人工智能正以前所未有的方式重塑数学学习的路径。通过自然语言处理与符号计算的深度融合,AI不仅能解析抽象定义,还能将定理、证明和几何直觉转化为可交互、可验证的…
📅 2026/7/29 1:14:44
1. 项目背景与核心价值去年参与的一个短剧项目让我深刻体会到传统创作流程的痛点:编剧团队花了三周打磨剧本,角色设计反复修改了七版,最后成片时又因为演员档期问题不得不临时调整分镜。这种低效的创作模式在快节奏的内容行业越来越难以为继。…
📅 2026/7/29 1:14:44
remix-i18next TypeScript类型安全实践:确保翻译键与类型定义同步 【免费下载链接】remix-i18next The easiest way to translate your React Router framework mode apps 项目地址: https://gitcode.com/gh_mirrors/re/remix-i18next
在开发多语言应用时&am…
📅 2026/7/29 1:14:46
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/28 7:13:45
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/28 17:14:18
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/28 5:13:40