harmony-utils之JSONUtil,JSON工具类

简介: harmony-utils之JSONUtil是一款HarmonyOS平台下的高效JSON处理工具类,支持JSON字符串与对象、数组、Map之间的相互转换,简化数据解析与操作,提升开发效率。

harmony-utils之JSONUtil,JSON工具类

harmony-utils 简介与说明


harmony-utils 一款功能丰富且极易上手的HarmonyOS工具库,借助众多实用工具类,致力于助力开发者迅速构建鸿蒙应用。其封装的工具涵盖了APP、设备、屏幕、授权、通知、线程间通信、弹框、吐司、生物认证、用户首选项、拍照、相册、扫码、文件、日志,异常捕获、字符、字符串、数字、集合、日期、随机、base64、加密、解密、JSON等一系列的功能和操作,能够满足各种不同的开发需求。
picker_utils 是harmony-utils拆分出来的一个子库,包含PickerUtil、PhotoHelper、ScanUtil。

下载安装
ohpm i @pura/harmony-utils
ohpm i @pura/picker_utils

  //全局初始化方法,在UIAbility的onCreate方法中初始化 AppUtil.init()
  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
    AppUtil.init(this.context);
  }

API方法与使用


jsonToBean JSON字符串转对象
let objStr: string = '{"id":"No_1060701","name":"张三","age":20,"addr":"乌市天山区","work":"工程师","salary":9223372036854775807.2512,"user":{"id":"No_1060701","name":"张三","age":20,"addr":"乌市天山区","work":"工程师"}}';
let user = JSONUtil.jsonToBean(objStr, User);
beanToJsonStr 对象转JSON字符串
let user: User = new User();
let str = JSONUtil.beanToJsonStr(user);
jsonToArray JSON字符串转Array
let arrayStr = ResUtil.getRawFileContentStrSync('data_utils.json');
let array = JSONUtil.jsonToArray<DescribeBean>(this.arrayStr);
array.forEach((item, index) => {
  LogUtil.error(`${index} - ${JSON.stringify(item)}`);
});
jsonToMap JSON字符串转Map
let mapStr: string = '{"id":"NO_10000011","name":"王五五","age":"30","addr":"乌市天山区","work":"攻城狮","salary":9223372036854775807.2512}';
let map = JSONUtil.jsonToMap(mapStr);
map.forEach((value, key) => {
  LogUtil.error(`${key} - ${value}`);
});
mapToJsonStr Map转JSON字符串
let mapStr: string = '{"id":"NO_10000011","name":"王五五","age":"30","addr":"乌市天山区","work":"攻城狮","salary":9223372036854775807.2512}';
let map = JSONUtil.jsonToMap(mapStr);
isJSONStr 判断是否是字符串格式json
let objStr: string = '{"id":"No_1060701","name":"张三","age":20,"addr":"乌市天山区","work":"工程师","salary":9223372036854775807.2512,"user":{"id":"No_1060701","name":"张三","age":20,"addr":"乌市天山区","work":"工程师"}}';
let b1 = JSONUtil.isJSONStr(objStr);
let b2 = JSONUtil.isJSONStr("abcd1234");

示例代码


import {
    router } from '@kit.ArkUI';
import {
    MockSetup } from '@ohos/hamock';
import {
    JSONUtil, LogUtil, ResUtil, ToastUtil } from '@pura/harmony-utils';
import {
    TitleBarView } from '../../component/TitleBarView';
import {
    DescribeBean } from '../../model/DescribeBean';
import {
    User } from '../../model/User';


/**
 * JSON工具类
 */
@Entry
@Component
struct Index {
   
  private scroller: Scroller = new Scroller();
  @State describe: DescribeBean = router.getParams() as DescribeBean;
  private readonly objStr: string = '{"id":"No_1060701","name":"张三","age":20,"addr":"乌市天山区","work":"工程师","salary":9223372036854775807.2512,"user":{"id":"No_1060701","name":"张三","age":20,"addr":"乌市天山区","work":"工程师"}}';
  private readonly mapStr: string = '{"id":"NO_10000011","name":"王五五","age":"30","addr":"乌市天山区","work":"攻城狮","salary":9223372036854775807.2512}';
  @State arrayStr: string = '';

  @MockSetup
  mock() {
   
    this.describe = new DescribeBean("JSONUtil", "JSON工具类");
  }

  aboutToAppear(): void {
   
    ResUtil.getRawFileContentStr('data_utils.json').then((result) => {
   
      this.arrayStr = result;
    })
  }

  onBackPress(): boolean {
   
    return false;
  }

  build() {
   
    Column() {
   
      TitleBarView({
    describe: this.describe })
      Divider()
      Scroll(this.scroller) {
   
        Column() {
   
          Button("jsonToBean()")
            .btnStyle()
            .onClick(() => {
   
              let user = JSONUtil.jsonToBean(this.objStr, User);
              LogUtil.error(`${
     user instanceof User}`);
              LogUtil.error(`${
     user?.name} - ${
     user?.age} - ${
     user?.addr} - ${
     user?.work} - ${
     user?.salary} - ${
     user?.id}`)
              user?.say("麻辣豆腐!");
              ToastUtil.showToast("请查看Log日志");
            })
          Button("beanToJsonStr()")
            .btnStyle()
            .onClick(() => {
   
              let user: User = new User();
              let str = JSONUtil.beanToJsonStr(user);
              LogUtil.error(`JSON字符串: ${
     str}`)
              ToastUtil.showToast("请查看Log日志")
            })
          Button("jsonToArray()")
            .btnStyle()
            .onClick(() => {
   
              ResUtil.getRawFileContentStrSync('data_utils.json')
              let array = JSONUtil.jsonToArray<DescribeBean>(this.arrayStr);
              array.forEach((item, index) => {
   
                LogUtil.error(`${
     index} - ${
     JSON.stringify(item)}`)
              })
              ToastUtil.showToast("请查看Log日志");
            })
          Button("jsonToMap()")
            .btnStyle()
            .onClick(() => {
   
              let map = JSONUtil.jsonToMap(this.mapStr);
              map.forEach((value, key) => {
   
                LogUtil.error(`${
     key} - ${
     value}`);
              })
              ToastUtil.showToast("请查看Log日志");
            })
          Button("mapToJsonStr()")
            .btnStyle()
            .onClick(() => {
   
              let map = JSONUtil.jsonToMap(this.mapStr);
              let JsonStr = JSONUtil.mapToJsonStr(map);
              LogUtil.error("JsonStr: " + JsonStr);
              ToastUtil.showToast("请查看Log日志");
            })

          Button("isJSONStr()")
            .btnStyle()
            .onClick(() => {
   
              let b1 = JSONUtil.isJSONStr(this.objStr);
              let b2 = JSONUtil.isJSONStr(this.arrayStr);
              let b3 = JSONUtil.isJSONStr(this.mapStr);
              let b4 = JSONUtil.isJSONStr("abcd1234");
              LogUtil.error(`b1: ${
     b1}\nb2: ${
     b2}\nb3: ${
     b3}\nb4: ${
     b4}`)
              ToastUtil.showToast("请查看Log日志")
            })

          Blank().layoutWeight(1)
        }
        .margin({
    top: 5, bottom: 5 })
      }
      .layoutWeight(1)
    }
    .width('100%')
    .height('100%')
    .justifyContent(FlexAlign.Start)
    .backgroundColor($r('app.color.main_background'))
  }
}


@Styles
function btnStyle() {
   
  .width('90%')
  .margin({
    top: 10, bottom: 5 })
}

创作不易,请给童长老点赞👍


https://github.com/787107497/harmony-utils
https://gitee.com/tongyuyan/harmony-utils
OpenHarmony三方库

目录
相关文章
|
JSON JavaScript 前端开发
HarmonyOS NEXT实战:接入和使用axios
HarmonyOS Next 实战中,使用 Axios 可实现高效网络请求。Axios 是基于 Promise 的库,支持 GET、POST 等方法,并具备拦截器、自动 JSON 转换等功能。适配 OpenHarmony 后,仍保留其原有特性。需安装 @ohos/axios 并配置网络权限,可创建工具类统一管理请求与响应。
621 0
|
IDE 开发工具 Windows
 鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之ScrollBar组件
 鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之ScrollBar组件
475 0
|
容器
HarmonyOS Next快速入门:AlertDialog警告弹窗
本教程介绍HarmonyOS Next应用开发中AlertDialog组件的使用,涵盖弹窗参数配置与交互逻辑实现,适合初学者快速掌握弹窗开发技巧。
320 0
|
开发者
HarmonyOS实战:实现任意拖动的应用悬浮窗口
本文介绍了在鸿蒙系统上实现全局悬浮窗口的方法。通过创建子 Window,结合手势拖动、边界处理和窗口销毁等功能,实现一个可在任意页面悬浮、移动且不会超出边界的悬浮窗。文章详细解析了技术实现步骤,包括使用 `createSubWindow` 创建窗口、设置布局与背景、手势交互及边界计算等。此外,还提到 Window 的应用场景可扩展至自定义弹窗、Poupwindow 和 toast 等功能,为开发者提供更多可能性。
1081 0
HarmonyOS实战:实现任意拖动的应用悬浮窗口
|
JSON 生物认证 API
harmony-utils之StrUtil,字符串工具类
harmony-utils 是一款专为HarmonyOS开发的高效工具库,提供丰富的字符串处理功能。其字符串工具类StrUtil支持判空、去空格、替换、大小写转换、编码转换等常用操作,简化字符串处理逻辑,提升开发效率。适用于鸿蒙应用开发中的各类字符串场景。
407 0
|
数据处理
鸿蒙开发:ArkTs字符串string
字符串类型是开发中非常重要的一个数据类型,除了上述的方法概述之外,还有String对象,正则等其他的用处,我们放到以后得篇章中讲述。
1096 19
|
API Apache 开发者
最受欢迎的三方库之EventBus
EventBus 是一款支持 Sticky 和跨 App 广播的消息总线,适用于 HarmonyOS 开发。提供丰富的 API,如事件监听、消息发布等,助力高效构建应用。
331 0
|
Apache 开发者
最受欢迎的三方库之SpinKit
SpinKit 是一款适用于 OpenHarmony/HarmonyOS 的加载动画库,提供多种动画类型与自定义配置,帮助开发者轻松实现美观的加载效果。
336 0
|
API Apache Android开发
最受欢迎的三方库之harmony-web
`harmony-web` 是基于鸿蒙 WebView 构建的轻量级库,提供丰富的功能与问题解决方案,简化 WebView 开发。结合 `harmony-utils` 与 `harmony-dialog`,可快速构建高效、易用的鸿蒙应用。支持 ArkWeb 组件与多种配置选项,助力开发者高效实现网页加载、交互及弹窗功能。开源协议为 Apache License 2.0。
406 0
|
JSON 生物认证 API
harmony-utils之RegexUtil,正则工具类
RegexUtil 是 harmony-utils 中的正则工具类,提供多种常用正则验证方法,如验证手机号、邮箱、身份证、数字、URL 等。支持快速判断字符串是否匹配特定格式,助力 HarmonyOS 开发高效便捷。
324 0