Json解析

【Hive---15】json相关函数 『 get_json_object() | json_tuple() | JsonSerde』 1. 概述 2. get_json_object() (不推荐使用) 2.1 概述 2.2 例子 2.3 一个注意事项 3. json_tuple() (推荐使用) 3.1 概述 3.2 例子 3.3 一个注意点 4. 使用内置解析器JsonSerde 阅读详情

快速使用:java解析复杂json:JSONObject 和 JSONArray的使用 - 有梦就能实现 - 博客园

详解:JSON三种数据解析方法(转) - mao的博客 - 博客园

JsonObject 和 JsonArray的使用

我们的目的是解析下面这样的json内容:

 {
     "feeds": [
         {
             "id": 299080,
             "oid": 288342,
             "category": "article",
             "data": {
                 "subject": "视频直播:会面",
                 "summary": "在新加坡会面",
                 "cover": "/288342/56a263bcab4a4c55b0bef0528ce880b6_padmini.JPG",
                 "pic": "",
                 "format": "video",
                 "changed": "2015-11-07 14:35:22"
             }
         },
         {
             "id": 299076,
             "oid": 288340,
             "category": "article",
             "data": {
                 "subject": "荔新闻3.0:不止是阅读",
                 "summary": "手机应用“荔新闻”于近期推出全新升级",
                 "cover": "/288340/3e8e2c397c70469f8845fad73aa38165_padmini.JPG",
                 "pic": "",
                 "format": "txt",
                 "changed": "2015-09-22 16:01:41"
             }
         }
     ],
     "PageIndex": 1,
     "PageSize": 20,
     "TotalCount": 53521,
     "TotalPage": 2677
 }

我们看上面的符号,里面有[] ,{}等符号,其中

  • [] 中括号代表的是一个数组

  • {} 大括号代表的是一个对象

  • 双引号 “” 表示的是属性值

  • 冒号 : 代表的是前后之间的关系,冒号前面是属性的名称,后面是属性的值,这个值可以是基本数据类型,也可以是引用数据类型

我们先来JSONObject(系统自带的类)类中的方法:

这里写图片描述

代码如下:

 public class JsonUtils {
     /**
      * 根据json数据解析返回一个List<HashMap<String, Object>>集合
      * @param json  json数据
      * @return
      */
     public static List<HashMap<String, Object>> getJsonList(String json) {
         List<HashMap<String, Object>> dataList;
         dataList = new ArrayList<>();
         try {
             JSONObject rootObject = new JSONObject(json);
             JSONObject paramzObject = rootObject.getJSONObject("paramz");
             JSONArray feedsArray = paramzObject.getJSONArray("feeds");
             for (int i = 0; i < feedsArray.length(); i++) {
                 JSONObject sonObject = feedsArray.getJSONObject(i);
                 JSONObject dataObject = sonObject.getJSONObject("data");
                 String subjectStr = dataObject.getString("subject");
                 String summaryStr = dataObject.getString("summary");
                 String coverStr = dataObject.getString("cover");
                 HashMap<String, Object> map = new HashMap<>();
                 map.put("subject", subjectStr);
                 map.put("summary", summaryStr);
                 map.put("cover", coverStr);
                 dataList.add(map);
             }
             return dataList;
         } catch (JSONException e) {
             e.printStackTrace();
         }
         return null;
     }
 }

下面我又写了一个解析的方法,方法中会有一些冗余的代码,是为了更加深刻理解JSON解析而写的,实际中可以删掉,也用了一行GSON解析

 public class DataModel {
 ​
     /**
      * subject : 会面
      * summary : 在新加坡会面
      * cover : /Attachs/Article/288342/56a263bcab4a4c55b0bef0528ce880b6_padmini.JPG
      * pic :
      * format : video
      * changed : 2015-11-07 14:35:22
      */
 ​
     public String subject;
     public String summary;
     public String cover;
     public String pic;
     public String format;
     public String changed;
 ​
     @Override
     public String toString() {
         return "DataModel{" +
                 "subject='" + subject + '\'' +
                 ", summary='" + summary + '\'' +
                 ", cover='" + cover + '\'' +
                 ", pic='" + pic + '\'' +
                 ", format='" + format + '\'' +
                 ", changed='" + changed + '\'' +
                 '}';
     }
 }
 /**
 * 根据json对象获取List<DataModel>集合
 * @param json 数据
 * @return
 */
 public static List<DataModel> getGsonList(String json) {
         List<DataModel> dataList;
         try {
             JSONObject rootObject = new JSONObject(json);
             JSONObject paramzObject = rootObject.getJSONObject("paramz");
 ​
             /**
              * JSONArray的构造方法获取JSONArray对象
              */
             JSONArray jsonArray = new JSONArray(paramzObject.getString("feeds"));
             Log.i(TAG, "jsonarray.length():"+jsonArray.length());
 ​
             /**
              * 获取JSONObject对象的属性关键字
              */
             Iterator<String> iterators = paramzObject.keys();
             while (iterators.hasNext()) {
                 Log.i(TAG, "iterators: " + iterators.next());
             }
             JSONArray feeds = paramzObject.getJSONArray("feeds");
             dataList = new ArrayList<>();
             for (int i = 0; i < feeds.length(); i++) {
                 JSONObject jsonObject = feeds.getJSONObject(i);
                 DataModel model = new Gson().fromJson(jsonObject.getString("data"),                 new TypeToken<DataModel>() {
                 }.getType());
                 Log.i(TAG, "DataModel: " + model.toString());
                 dataList.add(model);
             }
             return dataList;
         } catch (JSONException e) {
             // TODO Auto-generated catch block
             e.printStackTrace();
         }
 ​
         return null;
     }
 }

运行结果:

这里写图片描述

总结

  • 对于JSONObject对象来说,想要得到一个JSONObject对象通常可以通过

    • 构造方式:JSONObject(String json)-> JSONObject rootObject = new JSONObject(json);

    • JSONObject getJSONObject(String name){} -> JSONObject paramzObject = rootObject.getJSONObject(“paramz”);

  • 对于JSONArray对象来说,想要得到一个JSONArray对象通常可以通过

    • 构造方式:JSONArray(String json) -> JSONArray jsonArray = new JSONArray(paramzObject.getString(“feeds”));

    • JSONObject getJSONObject(String name){} -> JSONArray feeds = paramzObject.getJSONArray(“feeds”);

鸿蒙next json解析 ArkUI 带你玩转 arkts json解析 相信很多同学再开发过程中都会遇到json解析的处理,不管是跟服务端交互 或者是读取本地的json 都会遇到json解析 那么正好今天有空正好讲一下鸿蒙next里面的json解析arkts 里面的提供丰富的api来解析我们的json ,对比其他端来说也是相对比较简单 对于复杂的json 我们可以定义一个 interface 或者一个class 来配合我们的,JSON.parse 来进行解析复杂的json数据 当然这个生成数据模型model 我们团队有开发一个插件,这样也大大方便我们开发。 阅读详情

相关推荐

Android JSON 解析

在 Android 中,JSON(JavaScript Object Notation)是一种常用的数据交换格式,用于客户端与服务器之间的数据传输。Android 提供了多种方式来处理 JSON 数据,本文章介绍了 Android JSON 解析以及 Gson 的使用,和其他第三方库的说明。

天逸的博客 2520

JSONObject使用方法及详解

最近自己负责的项目涉及到JSON数据的解析,所以在学习之后讲讲自己的认识及见解,希望对大家有帮助. 首先我们来讲讲JSONObject,JSON的数据格式如下: [ {  name1 : { name2: { name3: ' value1' , name4: ' value2 ' }  }  }  , { }  ] 从外到里看,例子中就是一个数组,数组里面是两个json格式的字符串,取出n

xifei66的博客 3万+

RTKlib操作手册--使用样例数据演示

本文将使用样例数据演示如何使用RTKLIB进行rtk差分定位。

samur2的博客 7787

jsonobject的get方法使用

jsonobject的get方法使用

weixin_52774180的博客 4898

Skynet 框架面试题

本文整理了游戏服务端开发面试中 Skynet 框架的高频考点,涵盖底层架构、消息派发、协程调度、网络 I/O、harbor 跨机通信、内存管理、socket 处理、阻塞操作、错误处理等核心内容。全面覆盖 Skynet 框架的原理、使用和实战问题,追求深入准确,拒绝八股文。

小赖的博客 385

Silvaco TCAD 2018安装后,如何配置TonyPlot 5.0.22.R并解决绘图报错?

本文详细介绍了在Windows系统上安装Silvaco TCAD 2018后,如何正确配置TonyPlot 5.0.22.R并解决常见的绘图报错问题。内容包括版本兼容性分析、环境变量设置、常见错误解决方案以及性能优化建议,帮助用户顺利完成仿真结果的可视化工作。

weixin_31031711的博客 429

JSONObject中的get与getString

net.sf.json包中的JSONObject方法: private boolean nullObject; private Map properties; public Object get(String key) { this.verifyIsNull(); return this.properties.get(key);...

u011277123的博客 1万+

RK3588开发笔记-麦克风阵列多pdm通道合并成一个声卡

在音频设备的开发中,特别是在多通道音频数据处理场景中,如何将多个PDM(Pulse Density Modulation)通道整合成一个声卡设备,是一个非常具有挑战性的问题。RK3588芯片作为一款性能强大的平台,提供了对多个音频通道的支持。本文将介绍如何在RK3588上将多个PDM通道合并成一个麦克风阵列声卡,从而在Linux系统下统一管理和使用,提高多通道音频的同步性。在本文中我们主要介绍使用2通道回采+4通道mic声音采集构成一个6通道声卡,加以回声消除实现一个多麦克风阵列。

flypig has a dream! 1927

JSONObject和JSONArray的基本使用

JSONObject和JSONArray的基本使用

追求卓越583的博客 2229

金融机构和贷款产品数据抓取:使用Python爬虫技术获取金融机构的贷款产品信息与条件

本文介绍了如何使用Python爬虫技术抓取金融机构的贷款产品信息,包括静态网页抓取和动态网页抓取两种方法。通过requestsSelenium等工具,我们能够轻松抓取银行和消费金融平台上的贷款信息,并存储和分析数据。随着技术的发展,我们还可以扩展爬虫功能,抓取更多的金融机构网站,或者结合自然语言处理技术对贷款产品的评论进行情感分析,为用户提供更多维度的贷款决策支持。

2201_76125261的博客 1735

镜头调焦的 调整的是焦距还是像距?

在镜头 “调焦”(即日常拍照时的)中,调整的核心是,而非焦距。

AIoT深度探索者 | 嵌入式系统架构师 深耕物联网(IoT)与人工智能(AI)融合技术,聚焦​​边缘计算、图像开发、低功耗通信协议​​,致力于智能硬件,关注我获取最新技术文章信息与海量资源~ 1354

JSON的三种解析方式

JSON的三种解析方式 一、什么是JSON? JSON是一种取代XML的数据结构,和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加快速度。 JSON就是一串字符串 只不过元素会使用特定的符号标注。 {} 双括号表示对象 [] 中括号表示数组 "" 双引号内是属性或值 : 冒号表示后者是前者的值(这个值可以是字符串、数字、也可以是另一个数组或对象...

匆匆那年的专栏 5万+

【Claude Code 源码解析教程】第4章:QueryEngine 查询引擎

本章深入解析 Claude Code 的核心引擎——QueryEngine,它是整个对话系统的"心脏",负责管理会话状态、消息处理流程和多轮对话支持。

rengang66的博客 270

Qt构建JSON及解析JSON

一般来讲C++类和对象在java中是无法直接直接使用的,因为压根就不是一个规则。但是他们在内存中都是二进制表示的,所以把C++的类和对象转成二进制再按照java的规则解析这段二进制代码就可以做到C++描述的东西在java中复现了。

a1937194471的博客 5426

机器学习笔记 - 基于深度学习(HomographyNet)的图像单应性估计

论文提出了一个深度卷积神经网络来估计一对图像之间的相对单应性。我们的前馈网络有10层,以两个堆叠的灰度图像作为输入,并产生一个8自由度的单应性,可用于映射从第一个图像到第二个图像的像素。我们为HomographyNet提出了两种卷积神经网络架构一个直接估计实值单应性参数的回归网络,以及一个在量化单应性上产生分布的分类网络。我们使用4点单应性参数化,将一个图像的四个角映射到第二个图像。我们的网络使用扭曲的MS-COCO图像以端到端的方式进行训练。论文的贡献如下。........................

学以致用 知行合一 3087

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

C#解析JSON

全称“JavaScript Object Notation(JavaScript对象表示法)”,JSON 是存储和交换文本信息的语法。[ {"id" : 2 , "name" : "星河爆破" , "number" : 999 } , {"id" : 3 , "name" : "九星连珠" , "number" : 9 } , {"id" : 4 , "name" : "一语成谶" , "number" : 999 } ]学习JSON基础教程在线JSON解析及格式化验证网站。

weixin_43046974的博客 1万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

JSON解析详解

JSON解析详解 1.定义一串测试JSON { "retCode":0, "retMSg":"成功", "data":[ { "name":"李雷", "id":"001", "score":{ "Chinese":"80", "Math":"95" }, "schoolInfo": [ { "School_name": "清华"

Clozzz的博客 2万+

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

JavaScript解析JSON对象及JSON字符串

JavaScript解析JSON对象是常用功能之一。此处我们要明确JSON对象和JSON字符串的区别?否则会给我们的解析带来困扰。主要实现如下功能:1、JavaScript解析JSON字符串和JSON对象?2、JavaScript解析JSON数组?3、JavaScript解析来自springboot通过@ResponseBody返回的JSON字符串?4、禁用eval后如何替代eval?JSON对象的本质是一个对象,对象中属性的值可以通过object.name的方式访问。

雾林小妖的博客 1678

JSON解析

JSON是一种轻量级的数据交换格式,它采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得JSON成为理想的数据交换语言,易于人的阅读和编写,同时也有利于机器解析和生成,并有效地提升网络传输效率。JSON的具体使用方法。

m0_68041576的博客 1万+

Qt解析JSON

Qt解析JSON的类QJsonDocument、QJsonObject、QJsonArray

qq_44723937的博客 3948

Java、JS解析JSON对象、JSON数组

一:利用alibaba.fastjson解析JSONObject、JSONArray package com.test1; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; public class TestJsonArray { public static void main(String[] args) { // json

jike11231的博客 8659

【JSON文件解析】JSON文件

JSON文件是什么? Qt如何解析JSON文件?

wddkxg的博客 3203
上一篇: 定时任务Scheduled
下一篇: 调用第三方接口
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值