java解析json_JAVA解析JSON数据

在使用第三方api的使用,有时候会从网络中获得json数据,所以说我们将如何解析json数据?

下面小编将通过以下几点来进行json的讲解

JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to read and write. It is easy for machines to parse and generate. It is based on a subset of theJavaScript Programming Language,Standard ECMA-262 3rd Edition - December 1999. JSON is a text format that is completely language independent but uses conventions that are familiar to programmers of the C-family of languages, including C, C++, C#, Java, JavaScript, Perl, Python, and many others. These properties make JSON an ideal data-interchange language.

31859a7919c3b8bc6736b8a292a5f03b.png

cc269ce6a6235842c57862d96620bbe7.png

2.Json数据类型

2-1.json对象

056dedb41a1101807e2d5814c4aad06a.png

2-2.json数组

a3e3ecd7e17f982a9ad53c9ef0b4ce34.png

ps:JSONObject与JSONArray的区别

6c9430599e1367d1bd824b2024f67ba8.png(JSON数组)

300930a13e99c7ab3922096f116115fa.png(JSON数组)

3.解析JSON数据(小编使用的GSON进行json数据的解析)

3-1 【JSONObject的解析】

下面是一个json文件:

{

"resultcode": "200",

"reason": "successed!",

"result": {

"sk": {

"temp": "24",

"wind_direction": "西南风",

"wind_strength": "2级",

"humidity": "51%",

"time": "10:11"

},

"today": {

"temperature": "16℃~27℃",

"weather": "阴转多云",

"weather_id": {

"fa": "02",

"fb": "01"

},

"wind": "西南风3-4 级",

"week": "星期四",

"city": "滨州",

"date_y": "2015年06月04日",

"dressing_index": "舒适",

"dressing_advice": "建议着长袖T恤、衬衫加单裤等服装。年老体弱者宜着针织长袖衬衫、马甲和长裤。",

"uv_index": "最弱",

"comfort_index": "",

"wash_index": "较适宜",

"travel_index": "",

"exercise_index": "较适宜",

"drying_index": ""

},

"future": [

{

"temperature": "16℃~27℃",

"weather": "阴转多云",

"weather_id": {

"fa": "02",

"fb": "01"

},

"wind": "西南风3-4 级",

"week": "星期四",

"date": "20150604"

},

{

"temperature": "20℃~32℃",

"weather": "多云转晴",

"weather_id": {

"fa": "01",

"fb": "00"

},

"wind": "西风3-4 级",

"week": "星期五",

"date": "20150605"

},

{

"temperature": "23℃~35℃",

"weather": "多云转阴",

"weather_id": {

"fa": "01",

"fb": "02"

},

"wind": "西南风3-4 级",

"week": "星期六",

"date": "20150606"

},

{

"temperature": "20℃~33℃",

"weather": "多云",

"weather_id": {

"fa": "01",

"fb": "01"

},

"wind": "北风微风",

"week": "星期日",

"date": "20150607"

},

{

"temperature": "22℃~34℃",

"weather": "多云",

"weather_id": {

"fa": "01",

"fb": "01"

},

"wind": "西南风3-4 级",

"week": "星期一",

"date": "20150608"

},

{

"temperature": "22℃~33℃",

"weather": "阴",

"weather_id": {

"fa": "02",

"fb": "02"

},

"wind": "西南风3-4 级",

"week": "星期二",

"date": "20150609"

},

{

"temperature": "22℃~33℃",

"weather": "多云",

"weather_id": {

"fa": "01",

"fb": "01"

},

"wind": "南风3-4 级",

"week": "星期三",

"date": "20150610"

}

]

},

"error_code": 0

}

我们进行解析(解析一部分):

package cn.edu.bzu.json;

import java.io.FileNotFoundException;

import java.io.FileReader;

import com.google.gson.JsonArray;

import com.google.gson.JsonIOException;

import com.google.gson.JsonObject;

import com.google.gson.JsonParser;

import com.google.gson.JsonSyntaxException;

public class Read {

public static void main(String args[]){

JsonParser parse =new JsonParser(); //创建json解析器

try {

JsonObject json=(JsonObject) parse.parse(new FileReader("weather.json")); //创建jsonObject对象

System.out.println("resultcode:"+json.get("resultcode").getAsInt()); //将json数据转为为int型的数据

System.out.println("reason:"+json.get("reason").getAsString()); //将json数据转为为String型的数据

JsonObject result=json.get("result").getAsJsonObject();

JsonObject today=result.get("today").getAsJsonObject();

System.out.println("temperature:"+today.get("temperature").getAsString());

System.out.println("weather:"+today.get("weather").getAsString());

} catch (JsonIOException e) {

e.printStackTrace();

} catch (JsonSyntaxException e) {

e.printStackTrace();

} catch (FileNotFoundException e) {

e.printStackTrace();

}

}

}

输出结果:

7a501e37840da2733f4bf9cdfd03b68e.png

3-2 【JSONArray的解析】

下面是一个json文件

{"cat":"it","language":[

{"id":1,"ide":"eclipse","name":Java},

{"id":2,"ide":"XCode","name":"Swift"},

{"id":3,"ide":"Visual Stdio","name":"C#"}

],"pop":true}

我们进行解析:

package cn.edu.bzu.json;

import java.io.FileNotFoundException;

import java.io.FileReader;

import com.google.gson.JsonArray;

import com.google.gson.JsonIOException;

import com.google.gson.JsonObject;

import com.google.gson.JsonParser;

import com.google.gson.JsonSyntaxException;

public class ReadJSON {

public static void main(String args[]){

try {

JsonParser parser=new JsonParser(); //创建JSON解析器

JsonObject object=(JsonObject) parser.parse(new FileReader("test.json")); //创建JsonObject对象

System.out.println("cat="+object.get("cat").getAsString()); //将json数据转为为String型的数据

System.out.println("pop="+object.get("pop").getAsBoolean()); //将json数据转为为boolean型的数据

JsonArray array=object.get("language").getAsJsonArray(); //得到为json的数组

for(int i=0;i

System.out.println("---------------");

JsonObject subObject=array.get(i).getAsJsonObject();

System.out.println("id="+subObject.get("id").getAsInt());

System.out.println("name="+subObject.get("name").getAsString());

System.out.println("ide="+subObject.get("ide").getAsString());

}

} catch (JsonIOException e) {

e.printStackTrace();

} catch (JsonSyntaxException e) {

e.printStackTrace();

} catch (FileNotFoundException e) {

e.printStackTrace();

}

}

}

输出结果:

ceaca33f46e41dcf3714764c52cd249f.png

3-3 【分析】

我们通过Gson进行解析,所以在使用前需要导入Gson.jar

解析json数据时,

1.需要进行创建Gson解析器

2.创建JSONObject对象

3.将json数据转为为相应的数据

4.源代码下载:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/294581.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android之android studio如何解决‘:app:packageDebug‘.(Duplicate files copied in APK META-INF/DEPENDENCIES)

不废话,先爆照 今天在使用glide的时候,我在项目里面添加了httpcore-4.3.2.jar和4.3.5.jar包,但是当我运行的时候就出现了这个错误 然后在build.gradle里面配置下面的信息就好了, android { packagingOptions { exclude META-IN…

Asp.Net MVC4.0 官方教程 入门指南之一-- 入门介绍

本教程将为您讲解使用微软的Visual Studio 2012 来建立一个ASP.NET MVC4 Web应用程序所需要的基础知识。 本示例将构建什么样的应用程序? 您将实现一个简单的电影管理应用程序,此程序将从数据库中选取记录展示列表,支持查询和查看&#xff0…

关注!这所211高校通知不放寒假!校园将实行封闭管理!

全世界只有3.14 % 的人关注了爆炸吧知识本文转自:募格学术新年伊始,北京顺义,辽宁大连、沈阳,黑龙江黑河,河北石家庄、邢台等地相继报告新增本土病例,随着春节的临近,人员流动和聚集增加&#x…

MediatR 在.NET应用中的实践

MediatR 简介MediatR是.NET中的开源简单中介者模式实现.它通过一种进程内消息传递机制(无其他外部依赖),进行请求/响应、命令、查询、通知和事件的消息传递,并通过泛型来支持消息的智能调度。开源库地址是https://github.com/jbog…

java 录屏_java 录屏 小工具源码(idea)

【实例简介】录制的视频保存在 java.io.tmpdir 目录,windows通常为 C:\Users\Administrator\AppData\Local\Temp【实例截图】点击播放后,效果如下:【核心代码】import java.awt.AWTException;import java.awt.Color;import java.awt.Dimensio…

Java - 强引用、弱引用、软引用、虚引用

1、强引用(StrongReference) 强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。如下: Object onew Object(); // 强引用 当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误&am…

dede织梦5.7,后台采集数据导入,空文章过滤.

为什么80%的码农都做不了架构师?>>> 后台目录下 dede/co_export.php 186行左右 else if($itemName litpic){$litpic trim($ctag->GetInnerText());} } 下面添加,变成 else if($itemName litpic){$litpic trim($ctag->GetInnerT…

真正的男人要勇于承担责任......

1 下个月可以住贵一点的房子了(素材来源网络,侵删)▼2 当灯牌坏了一个(素材来源网络,侵删)▼3 当前男友提着钱上门▼4 真正的男人要勇于承担责任(via.豆瓣 pink)▼5 &#xff1f…

WPF里面的常用笔刷

程序运行效果 <Window x:Class"This_brush.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"Title"MainWindow" Height"350" Width…

没想到,错误的单例写法,让 RabbitMQ 大量超时导致程序挂死!

一&#xff1a;背景 1. 讲故事10月份星球里的一位老朋友找到我&#xff0c;说他们公司的程序在一个网红直播带货下给弄得无响应了&#xff0c;无响应期间有大量的 RabbitMQ 超时&#xff0c;寻求如何找到根源&#xff0c;聊天截图我就不发了。既然无响应了&#xff0c;那必然是…

Android之OKHttp使用总结

介绍: OkHttp是一个高效的HTTP库: 持 SPDY ,共享同一个Socket来处理同一个服务器的所有请求如果SPDY不可用,则通过连接池来减少请求延时无缝的支持GZIP来减少数据流量缓存响应数据来减少重复的网络请求 会从很多常用的连接问题中自动恢复。如果您的服务器配置了多个IP地址…

开车走吗?朋友......

1 冬天出门有多难&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼2 这张图你们明白了什么&#xff1f;&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼3 奥特曼不用吃饭&#xff08;via.杰克波比&#xff0c;侵删&#xff09;▼4 为什么没人敢动孟婆&…

WPF中使用资源

这节讲一下如何在WPF中使用资源。01了解资源在编程中&#xff0c;一个变量&#xff0c;一段代码&#xff0c;一张图片&#xff0c;一段视频或者音频&#xff0c;这种可以拿来为我所用的东西就可以称之为资源&#xff0c;一个让人眼前一亮的程序&#xff0c;可能会使用到许许多多…

清华放大招!竟然连初三学生都招,一条龙培养到博士,还不准转专业......

全世界只有3.14 % 的人关注了爆炸吧知识提前5年博士毕业近日&#xff0c;清华大学本科招生网发布了一则重要公告——《清华大学2021年丘成桐数学科学领军人才培养计划招生办法》。在这则公告中&#xff0c;初三生&#xff0c;你没看错&#xff0c;是没有参加过中考、高考的初三…

一键生成Vue.js + Web API前后端集成项目

前言默认情况下&#xff0c;Visual Studio提供了“基于Vue.js Web 应用程序”项目模板&#xff0c;可以生成Vue.js前端项目。你需要另外创建Web API项目&#xff0c;调试时需要同时启动2个项目&#xff0c;然后还要解决前后端集成带来的问题&#xff0c;比如跨域访问。如果&…

【DB2学习文档之七】SQL for DB2

作者&#xff1a;gnuhpc 出处&#xff1a;http://www.cnblogs.com/gnuhpc/ 1.SQL的数据操作语言data manipulation language (DML) 参见Beginning SQL Queries: From Novice to Professional, by Clare Churcher (Apress, 2008) 2.Select语句 这个语句是DB2中最简单也最复杂的语…

这些让人看瞎了的设计!实力证明,谁才是世界的最终boss!

全世界只有3.14 % 的人关注了爆炸吧知识我瞎了也懵了昨天知识君刷微博&#xff0c;看到了一组动图&#xff0c;一时间我都不知道是我的眼睛出了错&#xff0c;还是我的大脑反应不过来。奇了怪了&#xff01;怎么箭头反转了180后&#xff0c;还是原样&#xff01;问题到底出在哪…

弹出框css技巧

2019独角兽企业重金招聘Python工程师标准>>> 技术要点&#xff1a; 一个覆盖整个屏幕的浅灰色背景的div,一个包含内容的的div, 代码如下&#xff1a; <div id"financeTip" style""><div class"financeTipBg" style"&qu…

在业务层实现校验请求参数

前言在前面的文章中&#xff0c;我们介绍了在业务层实现管道模式&#xff1a;响应缓存记录请求日志今天&#xff0c;我们同样使用IPipelineBehavior&#xff0c;介绍如何在业务层实现校验请求参数&#xff0c;用于检查输入是否满足业务要求。Demo首先&#xff0c;创建ASP.NET C…

静电可以有多好玩?

1 静电可以有多好玩&#xff1f;孩子&#xff1a;知道我怎么秃的了吧2 这就是爱情啊3 今年最佳cos4 别人家的狗能当桌子▼你家的狗……&#xff08;主银&#xff0c;我就这样静静的看着你&#xff09;▼5 含羞草6 可以让我骑一下你吗7 总之&#xff0c;离我远点你点的每个赞&am…