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…

shell编程的一些例子4

bash支持一维数组 1.数组定义: name (value1,value2...valueN) value形如[[subscript]]string [subscript] 是可选项 如果没给出 则其下标是上一个元素的下标加1 例子: $name(sum scan [6]haha dfg ) $echo ${name[0]} sum $echo ${name[1]} scan $ec…

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…

Oracle hang 之sqlplus -prelim使用方法

第一章 Oracle hang 之sqlplus -prelim使用方法 很多情况下,Oracle hang导致sqlplus无法连接,从而无法获得Oracle系统和进程状态,使得定位问题缺少强有力的依据。所幸的是Oracle 10g推出了sqlplus -prelim选项,在Oracle挂起时依…

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地址…

CSS:CSS 在工程中改变——面向对象的CSS (OO CSS)

一、OO CSS 的概念解读 &#xff08;一&#xff09;众多开发者忽视了CSS的表现&#xff0c;认为其太过简单&#xff0c;是一种机械的工作&#xff0c;而把更多关注在JS的性能或者其他方面。 &#xff08;二&#xff09;OO CSS 将页面可重用元素抽象成一个类&#xff0c;用clas…

Vlan和vtp重要的配置命令

1、 duplex &#xff08;full half auto&#xff09;配置以太口双工属性2、 speed工作速率3、 switch mode access改端口为访问模式4、 switch access vlan 2把端口划分到vlan25、 switch port-security打开端口安全功能6、 switch port-security maximum 1 允许MAC条目最大17、…

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

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

Ubuntu 下配置 NFS

1、安装 NFS 服务sudo apt-get install nfs-kernel-server 2、修改 NFS 配置文件vi /etc/exports 在文件中添加 NFS 的目录 /nfsboot *(rw,sync) 更改了/etc/exports 后要通过 sudo exportfs -r 来更新这个文件 3、在根目录下建立 NFS 的目录sudo mkdir /nfsboot 修改该目录的…

WPF中使用资源

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

生成二维码的 jQuery 插件:jquery.qrcode.js

jquery.qrcode.js 是一个纯浏览器 生成 QRcode 的 jQuery 插件&#xff0c;它使用非常简单&#xff0c;生成的 QRcode 无需下载图片&#xff0c;并且不依赖第三方服务&#xff0c;比如最近 Google 服务在国内访问不稳就造成我好几个网站的 QRcode 不能使用&#xff0c;并且压缩…

java 中时间计算_java中关于时间的计算

1.描述&#xff1a;在原有时间上增加一个时间差&#xff1a;代码示例&#xff1a;Date psd sysDate();String workTimeP1 mapP.get("WORK_TIME_") ! null ? mapP.get("WORK_TIME_").toString() : "0";int newsInteger.parseInt(workTimeP1)*6…