HiLog配置

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

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

ZSONObject

 //Json测试2:使用ZSONObject(官方)
// 1.将总Json字符串转为一个ZSONObject
ZSONObject zsonObject1 = ZSONObject.stringToZSON(str);
// 2.将所需要的内容从ZSONObject对象中取出
//// 2.1 当所需要的内容是数组时
////// 2.1.1 将所需数组内容 从 ZSONObject 中取出来 转换为 ZSONArray 得到的是一个新Json
ZSONArray 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】");
@Override
public void onStart(Intent intent) {
super.onStart(intent);
super.setUIContent(ResourceTable.Layout_ability_main);
//线程测试
MyExecutor.runChild(new Runnable() {
@Override
public 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字符串转为一个ZSONObject
ZSONObject zsonObject1 = ZSONObject.stringToZSON(str);
// 2.将所需要的内容从ZSONObject对象中取出
//// 2.1 当所需要的内容是数组时
////// 2.1.1 将所需数组内容 从 ZSONObject 中取出来 转换为 ZSONArray 得到的是一个新Json
ZSONArray 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() {
@Override
public void run() {
HiLog.info(loglabel,"MyExecutor:回到Main线程执行任务");
}
});
}
}); } @Override
public void onActive() {
super.onActive();
} @Override
public 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. JAVA自已设计JSON解析器

    当然,有很多很好的JSON解析的JAR包,比如JSONOBJECT,GSON,甚至也有为我们测试人员而打造的JSONPATH,但我还是自已实现了一下(之前也实现过,现在属于重构). 思想是这样的,以这 ...

  2. 【JSON解析】JSON解析

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

  3. Android okHttp网络请求之Json解析

    前言: 前面两篇文章介绍了基于okHttp的post.get请求,以及文件的上传下载,今天主要介绍一下如何和Json解析一起使用?如何才能提高开发效率? okHttp相关文章地址: Android o ...

  4. Json解析工具的选择

    前言 前段时间@寒江不钓同学针对国内Top500和Google Play Top200 Android应用做了全面的分析(具体分析报告见文末的参考资料),其中有涉及到对主流应用使用json框架Gson ...

  5. iOS json 解析遇到error: Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed.

    Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed. (Cocoa error 38 ...

  6. Android之JSON解析

    做个Android网络编程的同学一定对于JSON解析一点都不陌生,因为现在我们通过手机向服务器请求资源,服务器给我们返回的数据资源一般都是以JSON格式返回,当然还有一些通过XML格式返回,相对JSO ...

  7. Android总结之json解析(FastJson Gson 对比)

    前言: 最近为了统一项目中使用的框架,发现项目中用到了两种json解析框架,他们就是当今非常主流的json解析框架:google的Gson 和阿里巴巴的FastJson,为了废除其中一个所以来个性能和 ...

  8. JSON解析和XML解析对比

    JSON解析和XML解析是较为普遍的两种解析方式,其中JSON解析的市场分额更大.本文系统的分析两种解析方式的区别,为更好地处理数据作准备.由于目前阶段主要是做移动开发,所以本文所描述的JSON解析和 ...

  9. iOS json解析的几种方法 NSJSONSerialization,JSONKit,SBJson ,TouchJson

    相关的第三方类库大家可以去github上下载 1.NSJSONSerialization 具体代码如下 : - (void)viewDidLoad { [super viewDidLoad]; NSD ...

  10. Json解析工具Jackson(使用注解)

    原文http://blog.csdn.net/nomousewch/article/details/8955796 接上一篇文章Json解析工具Jackson(简单应用),jackson在实际应用中给 ...

随机推荐

  1. [第二章]c++学习笔记1(类和对象的基础2)

    类的成员函数可和类的定义分开写 类成员的可访问范围(private,public,protected) 具体使用方法 使用例

  2. Linux下搭建FFmpeg开发调试环境

    背景 如果你是一个FFmpeg的使用者,那么绝大部分情况下只需要在你的程序中引用FFmpeg的libav*相关的头文件,然后在编译阶段链接相关的库即可.但是如果你想调试FFmpeg内部相关的逻辑,或者 ...

  3. 尖端之作看逐浪-Zoomla!逐浪CMS python版发布

    免费下载:https://www.z01.com/down/3723.shtml Python是跻身于当代IT世界最流行和代码最高效的编程语言之一. 带着对技术的卓越追求.对客户的承诺.对品质的极致追 ...

  4. [Aizu1410]Draw in Straight Lines

    注意到当操作确定后,显然操作顺序总是涂黑色的1操作->涂白色的1操作->2操作 用$b/w_{r/c}(i,j)$表示$(i,j)$是否被黑色/白色 横着/竖着 涂过(1表示涂过,0表示没 ...

  5. [bzoj1593]旅馆

    用线段树维护区间中最大的一段连续的1,以左端点为左端点最大的一段连续的1,以右端点为右端点最大的一段连续的1,然后就可以支持区间修改和查询了 1 #include<bits/stdc++.h&g ...

  6. 新玩法-使用AllArgsConstructor+filal代替autowired

    和下面的代码一样: Springboot官方建议使用final来修饰成员变量,然后通过构造方法来进行注入原因:final修饰的成员变量是不能够被修改的,反射那就没办法了 还有一种写法: @Requir ...

  7. 明明pip安装python的模块了,pycharm还是找不到的解决方案

    以前pycharm的安装包和python的环境一直都不能融合在一起,到了今天才知道,原来他们都是有自己的工作环境的 自己的工作环境(虚拟解释器)和安装python的工作环境(基本解释器)不是一个环境, ...

  8. HelloWorld与java运行机制

    HelloWorld 新建文件夹存放代码 新建一个java文件 文件后缀为.java Hello.java 注意文件拓展名改为java文件 编写代码 public class Hello{ #类名 p ...

  9. .NET Core基础篇之:依赖注入DependencyInjection

    依赖注入已经不是什么新鲜话题了,在.NET Framework时期就已经出现了各种依赖注入框架,比如:autofac.unity等.只是在.net core微软将它搬上了台面,不用再依赖第三方组件(那 ...

  10. C#使用Thrift作为RPC框架实战(四)之TSocket

    前言 在前几个小节中我们讲了Thrift框架的基本概念以及重要的名称空间,接下来的几个小节,我们将站在实战的角度来深入讲解一些Thrift的重要类型.本小节我先要讲一下Thrift框架支持TCP通信的 ...