HiLog配置

为了方便调试,查看,先设置好Hilog

public static final HiLogLabel loglabel = new HiLogLabel(HiLog.LOG_APP,0x11102,"【xrilang】");

ZSONObject

//Json测试2:使用ZSONObject(官方)//  1.将总Json字符串转为一个ZSONObjectZSONObject zsonObject1 = ZSONObject.stringToZSON(str);// 2.将所需要的内容从ZSONObject对象中取出2.1 当所需要的内容是数组时// 2.1.1 将所需数组内容 从 ZSONObject 中取出来 转换为 ZSONArray 得到的是一个新JsonZSONArray result1 = zsonObject1.getZSONArray("lives");// 2.1.2 将这个新Json转为字符串输出看效果String result2 = result1.getString(0);HiLog.info(loglabel,"【ZSONObjec】result2::"+result2);【输出结果】 {"adcode":"130500","city":"邢台市","humidity":"98","province":"河北","reporttime":"2020-09-26 21:58:34","temperature":"17","weather":"多云","winddirection":"北","windpower":"≤3"}-------ZSONObject zsonObject2 = ZSONObject.stringToZSON(result2);-------2.2 当需要的内容是 普通数据类型时(例如String,int,double等)// 2.2.1 将所需内容取出,并存放在变量中,输出查看效果String  result3 = zsonObject2.getString("province");HiLog.info(loglabel,"【ZSONObjec】result3::"+result3);

HiJson(第三方)

获取与配置Json

获取HiJson

crazycodeboy/hijson: HiJson is a lightweight JSON parsing library that can be used for HarmonyOS, Android, and Java (github.com)

点击上方链接,复制如下图的红框内容

implementation 'org.devio.hi.json:hijson:1.0.0'

配置到项目文件中

HiJson使用

准备好一段Json

jsonString:{"status": "1","count": "1","info": "OK","infocode": "10000","lives": [{"province": "河北","city": "邢台市","adcode": "130500","weather": "多云","temperature": "17","winddirection": "北","windpower": "≤3","humidity": "98","reporttime": "2020-09-26 21:58:34"}]
}

导入HiJson包

import org.devio.hi.json.HiJson;

使用HiJson

//Json测试1:使用HiJson(第三方)HiJson hiJson = new HiJson(str).get("lives").get(0);String province = hiJson.value("province");String city = hiJson.value("city");HiLog.info(loglabel,"【HiJson】省市:"+province+"  城市:"+city);

执行结果

完整代码

MainAbility.java

package cc.mllt.eduxiancheng.slice;import cc.mllt.eduxiancheng.ResourceTable;
import ohos.aafwk.ability.AbilitySlice;
import ohos.aafwk.content.Intent;
import ohos.hiviewdfx.HiLog;
import ohos.hiviewdfx.HiLogLabel;
import ohos.utils.zson.ZSONArray;
import ohos.utils.zson.ZSONObject;
import org.devio.hi.json.HiJson;public class MainAbilitySlice extends AbilitySlice {String str = "{\n" +"    \"status\": \"1\",\n" +"    \"count\": \"1\",\n" +"    \"info\": \"OK\",\n" +"    \"infocode\": \"10000\",\n" +"    \"lives\": [\n" +"        {\n" +"            \"province\": \"河北\",\n" +"            \"city\": \"邢台市\",\n" +"            \"adcode\": \"130500\",\n" +"            \"weather\": \"多云\",\n" +"            \"temperature\": \"17\",\n" +"            \"winddirection\": \"北\",\n" +"            \"windpower\": \"≤3\",\n" +"            \"humidity\": \"98\",\n" +"            \"reporttime\": \"2020-09-26 21:58:34\"\n" +"        }\n" +"    ]\n" +"}";public static final HiLogLabel loglabel = new HiLogLabel(HiLog.LOG_APP,0x11102,"【xrilang】");@Overridepublic void onStart(Intent intent) {super.onStart(intent);super.setUIContent(ResourceTable.Layout_ability_main);//线程测试MyExecutor.runChild(new Runnable() {@Overridepublic void run() {HiLog.info(loglabel,"MyExecutor:在异步线程执行任务开始");//Json测试1:使用HiJson(第三方)HiJson hiJson = new HiJson(str).get("lives").get(0);String province = hiJson.value("province");String city = hiJson.value("city");HiLog.info(loglabel,"【HiJson】省市:"+province+"  城市:"+city);//Json测试2:使用ZSONObject(官方)//  1.将总Json字符串转为一个ZSONObjectZSONObject zsonObject1 = ZSONObject.stringToZSON(str);// 2.将所需要的内容从ZSONObject对象中取出2.1 当所需要的内容是数组时// 2.1.1 将所需数组内容 从 ZSONObject 中取出来 转换为 ZSONArray 得到的是一个新JsonZSONArray result1 = zsonObject1.getZSONArray("lives");// 2.1.2 将这个新Json转为字符串输出看效果String result2 = result1.getString(0);HiLog.info(loglabel,"【ZSONObjec】result2::"+result2);【输出结果】 {"adcode":"130500","city":"邢台市","humidity":"98","province":"河北","reporttime":"2020-09-26 21:58:34","temperature":"17","weather":"多云","winddirection":"北","windpower":"≤3"}-------ZSONObject zsonObject2 = ZSONObject.stringToZSON(result2);-------2.2 当需要的内容是 普通数据类型时(例如String,int,double等)// 2.2.1 将所需内容取出,并存放在变量中,输出查看效果String  result3 = zsonObject2.getString("province");HiLog.info(loglabel,"【ZSONObjec】result3::"+result3);HiLog.info(loglabel,"MyExecutor:在异步线程执行任务结束");MyExecutor.runMain(new Runnable() {@Overridepublic void run() {HiLog.info(loglabel,"MyExecutor:回到Main线程执行任务");}});}});}@Overridepublic void onActive() {super.onActive();}@Overridepublic void onForeground(Intent intent) {super.onForeground(intent);}
}

运行结果

MyExecutor.java

package cc.mllt.eduxiancheng.slice;import ohos.eventhandler.EventHandler;
import ohos.eventhandler.EventRunner;public class MyExecutor {/*** 切换任务到主线程执行* @param runnable*/public static void runMain(Runnable runnable) {//切换到主线程EventRunner runner = EventRunner.getMainEventRunner();EventHandler eventHandler = new EventHandler(runner);//执行任务eventHandler.postSyncTask(runnable);}/*** 在子线程执行任务* @param runnable*/public static void runChild(Runnable runnable) {//开启一个新线程EventRunner runner = EventRunner.create(true);EventHandler eventHandler = new EventHandler(runner);//执行任务eventHandler.postTask(runnable,0,EventHandler.Priority.IMMEDIATE);}
}

相关文章:【HarmonyOS】【多线程与并发】EventHandler - 萌狼蓝天 - 博客园 (cnblogs.com/mllt)

【HarmonyOS】【Json解析】ZSON 与 HiJson 使用相关推荐

  1. 【JSON解析】JSON解析

    前三篇博客分别介绍了xml的三种解析方法,分别是SAX,DOM,PULL解析XML,兴趣的朋友可以去看一下这[XML解析(一)]SAX解析XML,[XML解析(二)]DOM解析XML,[XML解析(三 ...

  2. android Json解析详解

    JSON的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语 言的支持),从而可以在不同平台间进行数 ...

  3. json解析:[1]gson解析json

    客户端与服务器进行数据交互时,常常需要将数据在服务器端将数据转化成字符串并在客户端对json数据进行解析生成对象.但是用jsonObject和jsonArray解析相对麻烦.利用Gson和阿里的fas ...

  4. spring boot2 修改默认json解析器Jackson为fastjson

    fastjson是阿里出的,尽管近年fasjson爆出过几次严重漏洞,但是平心而论,fastjson的性能的确很有优势,尤其是大数据量时的性能优势,所以fastjson依然是我们的首选:spring ...

  5. 安卓取map集合转换为json_android json解析成map格式

    "discount": { "3": "34", "4": "33", "5": ...

  6. 关于浮点数的json解析

    近期在工作中遇到个问题 通过post请求从其他系统(好像是C#写的)获得json字符串 {"geometry":{"rings":[[[40426489.331 ...

  7. Android Json解析方法

    为什么80%的码农都做不了架构师?>>>    关于Json Json:JavaScript Object Notation Json数据是一系列的键值对集合,相对XML体积小 Js ...

  8. android从服务端获取json解析显示在客户端上面,Android服务端获取json解析显示在客户端上面.doc...

    Android服务端获取json解析显示在客户端上面 Android从服务端获取json解析显示在客户端上面 首先说一下Json数据的最基本的特点,Json数据是一系列的键值对的集合,和XML数据来比 ...

  9. JavaScript语言精粹JSON解析器源码阅读

    1 // 这是一个用JavaScript编写JSON解析器的实现方案: 2 var jsonParser = (function() { 3 // 这是一个能把JSON文本解析成JavaScript数 ...

  10. 深入Java泛型(五):Json解析泛型

    前言 dio是一个强大的Dart Http请求库,支持Restful API.FormData.拦截器.请求取消.Cookie管理.文件上传/下载.超时.自定义适配器等- 为啥封装 统一处理请求域名: ...

最新文章

  1. 使用CruiseControl.Net全面实现持续集成
  2. 6、linux网络编程--UDP协议编程
  3. python复杂网络 学习笔记
  4. java volatile 死锁_Java 多线程:volatile 变量、happens-before 关系及内存一致性
  5. 1.1.1.1校园网_Apache Flink 1.11.0 重要功能全面解析
  6. 电脑c语言怎么调出来的,c语言系统源代码_C语言判断系统版本的代码怎样将值调出来啊...
  7. 全网最细之N种内部类详细讲解
  8. 使用磁盘为Linux添加swap
  9. win10环境下mysql8安装后Can‘‘t connect to MySQL server on localhost (10061)解决方法
  10. (3)zynq FPGA AXI4_Stream总线介绍
  11. 03、ADS使用记录之DC仿真控制器的使用
  12. 【多目标进化优化】MOEA 的分类
  13. FIL WORLD开启算力众筹新篇章,与世界一起助力FIL
  14. 飞机气动导数的插值计算_Matlab
  15. 插入U盘后 计算机未响应,电脑插入U盘后没有反应怎么办?
  16. 阿里云服务器ECS由什么组成
  17. 服务器系统上1068错误,错误1068,教您启动网络服务错误1068怎么解决
  18. 从游戏智能到疾病诊断,腾讯「绝悟」AI 从虚拟走向现实
  19. 广西免考职称英语计算机,2016年广西职称英语免考条件
  20. 最新gcc下载和linux环境变量设置

热门文章

  1. 尚硅谷 硅谷新闻_如果每个人都遥不可及,硅谷会损失什么
  2. 雅虎军规——前端优化的35条建议
  3. Ubuntu下安装使用Monaco字体
  4. 金字塔 2020-12-29
  5. java gbk 内码_JAVA 中文转GBK内码方法
  6. 超全汇总,常见的芯片封装大全-道合顺大数据infinigo
  7. web前端 基于html实现花店购物网站源码(HTML+CSS+JavaScript) 企业网站制作
  8. 【图形学实验】Loop Subdivision与Modified Butterfly Subdivision
  9. mysql alter auto increment_将MySQL列更改为AUTO_INCREMENT
  10. 为什么C语言执行后不会出现小数点,C语言教材第2章要点S.doc