【HarmonyOS】【Json解析】ZSON 与 HiJson 使用
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 使用相关推荐
- 【JSON解析】JSON解析
前三篇博客分别介绍了xml的三种解析方法,分别是SAX,DOM,PULL解析XML,兴趣的朋友可以去看一下这[XML解析(一)]SAX解析XML,[XML解析(二)]DOM解析XML,[XML解析(三 ...
- android Json解析详解
JSON的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语 言的支持),从而可以在不同平台间进行数 ...
- json解析:[1]gson解析json
客户端与服务器进行数据交互时,常常需要将数据在服务器端将数据转化成字符串并在客户端对json数据进行解析生成对象.但是用jsonObject和jsonArray解析相对麻烦.利用Gson和阿里的fas ...
- spring boot2 修改默认json解析器Jackson为fastjson
fastjson是阿里出的,尽管近年fasjson爆出过几次严重漏洞,但是平心而论,fastjson的性能的确很有优势,尤其是大数据量时的性能优势,所以fastjson依然是我们的首选:spring ...
- 安卓取map集合转换为json_android json解析成map格式
"discount": { "3": "34", "4": "33", "5": ...
- 关于浮点数的json解析
近期在工作中遇到个问题 通过post请求从其他系统(好像是C#写的)获得json字符串 {"geometry":{"rings":[[[40426489.331 ...
- Android Json解析方法
为什么80%的码农都做不了架构师?>>> 关于Json Json:JavaScript Object Notation Json数据是一系列的键值对集合,相对XML体积小 Js ...
- android从服务端获取json解析显示在客户端上面,Android服务端获取json解析显示在客户端上面.doc...
Android服务端获取json解析显示在客户端上面 Android从服务端获取json解析显示在客户端上面 首先说一下Json数据的最基本的特点,Json数据是一系列的键值对的集合,和XML数据来比 ...
- JavaScript语言精粹JSON解析器源码阅读
1 // 这是一个用JavaScript编写JSON解析器的实现方案: 2 var jsonParser = (function() { 3 // 这是一个能把JSON文本解析成JavaScript数 ...
- 深入Java泛型(五):Json解析泛型
前言 dio是一个强大的Dart Http请求库,支持Restful API.FormData.拦截器.请求取消.Cookie管理.文件上传/下载.超时.自定义适配器等- 为啥封装 统一处理请求域名: ...
最新文章
- 使用CruiseControl.Net全面实现持续集成
- 6、linux网络编程--UDP协议编程
- python复杂网络 学习笔记
- java volatile 死锁_Java 多线程:volatile 变量、happens-before 关系及内存一致性
- 1.1.1.1校园网_Apache Flink 1.11.0 重要功能全面解析
- 电脑c语言怎么调出来的,c语言系统源代码_C语言判断系统版本的代码怎样将值调出来啊...
- 全网最细之N种内部类详细讲解
- 使用磁盘为Linux添加swap
- win10环境下mysql8安装后Can‘‘t connect to MySQL server on localhost (10061)解决方法
- (3)zynq FPGA AXI4_Stream总线介绍
- 03、ADS使用记录之DC仿真控制器的使用
- 【多目标进化优化】MOEA 的分类
- FIL WORLD开启算力众筹新篇章,与世界一起助力FIL
- 飞机气动导数的插值计算_Matlab
- 插入U盘后 计算机未响应,电脑插入U盘后没有反应怎么办?
- 阿里云服务器ECS由什么组成
- 服务器系统上1068错误,错误1068,教您启动网络服务错误1068怎么解决
- 从游戏智能到疾病诊断,腾讯「绝悟」AI 从虚拟走向现实
- 广西免考职称英语计算机,2016年广西职称英语免考条件
- 最新gcc下载和linux环境变量设置
热门文章
- 尚硅谷 硅谷新闻_如果每个人都遥不可及,硅谷会损失什么
- 雅虎军规——前端优化的35条建议
- Ubuntu下安装使用Monaco字体
- 金字塔 2020-12-29
- java gbk 内码_JAVA 中文转GBK内码方法
- 超全汇总,常见的芯片封装大全-道合顺大数据infinigo
- web前端 基于html实现花店购物网站源码(HTML+CSS+JavaScript) 企业网站制作
- 【图形学实验】Loop Subdivision与Modified Butterfly Subdivision
- mysql alter auto increment_将MySQL列更改为AUTO_INCREMENT
- 为什么C语言执行后不会出现小数点,C语言教材第2章要点S.doc