【HarmonyOS】【Json解析】ZSON 与 HiJson 使用

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介: 【HarmonyOS】【Json解析】ZSON 与 HiJson 使用

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);

q6.png

HiJson(第三方)


获取与配置Json

获取HiJson

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

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

q5.png

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

配置到项目文件中

q4.png

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);

执行结果

q2.png

完整代码


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);
    }
}

运行结果

q1.png

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);
    }
}


相关文章
|
1月前
|
SQL 存储 JSON
SQL,解析 json
SQL,解析 json
72 8
|
3月前
|
存储 JSON API
淘系API接口(解析返回的json数据)商品详情数据解析助力开发者
——在成长的路上,我们都是同行者。这篇关于商品详情API接口的文章,希望能帮助到您。期待与您继续分享更多API接口的知识,请记得关注Anzexi58哦! 淘宝API接口(如淘宝开放平台提供的API)允许开发者获取淘宝商品的各种信息,包括商品详情。然而,需要注意的是,直接访问淘宝的商品数据API通常需要商家身份或开发者权限,并且需要遵循淘宝的API使用协议。
淘系API接口(解析返回的json数据)商品详情数据解析助力开发者
|
2月前
|
JSON API 数据格式
requests库中json参数与data参数使用方法的深入解析
选择 `data`或 `json`取决于你的具体需求,以及服务器端期望接收的数据格式。
235 2
|
2月前
|
JSON 前端开发 JavaScript
解析JSON文件
解析JSON文件
127 9
|
1月前
|
JSON JavaScript API
商品详情数据接口解析返回的JSON数据(API接口整套流程)
商品详情数据接口解析返回的JSON数据是API接口使用中的一个重要环节,它涉及从发送请求到接收并处理响应的整个流程。以下是一个完整的API接口使用流程,包括如何解析返回的JSON数据:
|
2月前
|
存储 JSON API
Python编程:解析HTTP请求返回的JSON数据
使用Python处理HTTP请求和解析JSON数据既直接又高效。`requests`库的简洁性和强大功能使得发送请求、接收和解析响应变得异常简单。以上步骤和示例提供了一个基础的框架,可以根据你的具体需求进行调整和扩展。通过合适的异常处理,你的代码将更加健壮和可靠,为用户提供更加流畅的体验。
173 0
|
3月前
|
JSON API 数据格式
基于服务器响应的实时天气数据进行JSON解析的详细代码及其框架
【8月更文挑战第25天】这段资料介绍了一个使用Python从服务器获取实时天气数据并解析JSON格式数据的基本框架。主要分为三个部分:一是安装必要的`requests`库以发起HTTP请求获取数据,同时利用Python内置的`json`库处理JSON数据;二是提供了具体的代码实现,包括获取天气数据的`get_weather_data`函数和解析数据的`parse_weather_data`函数;三是对代码逻辑进行了详细说明,包括如何通过API获取数据以及如何解析这些数据来获取温度和天气描述等信息。用户需要根据实际使用的天气API调整代码中的API地址、参数和字段名称。
|
1月前
|
数据采集 JSON 数据处理
抓取和分析JSON数据:使用Python构建数据处理管道
在大数据时代,电商网站如亚马逊、京东等成为数据采集的重要来源。本文介绍如何使用Python结合代理IP、多线程等技术,高效、隐秘地抓取并处理电商网站的JSON数据。通过爬虫代理服务,模拟真实用户行为,提升抓取效率和稳定性。示例代码展示了如何抓取亚马逊商品信息并进行解析。
抓取和分析JSON数据:使用Python构建数据处理管道
|
19天前
|
JSON 数据格式 索引
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。
|
22天前
|
JSON 缓存 前端开发
PHP如何高效地处理JSON数据:从编码到解码
在现代Web开发中,JSON已成为数据交换的标准格式。本文探讨了PHP如何高效处理JSON数据,包括编码和解码的过程。通过简化数据结构、使用优化选项、缓存机制及合理设置解码参数等方法,可以显著提升JSON处理的性能,确保系统快速稳定运行。

推荐镜像

更多
下一篇
无影云桌面