Gson解析第三方提供Json数据(天气预报,新闻等)
来源:互联网 发布:linux系统运行rtthread 编辑:程序博客网 时间:2024/05/21 07:55
之前都是自己写后台,自己的服务器提供数据给客户端,
最近在看第三方的数据接口,访问其他网站提供的信息;比如,我们可能自己收集的数据相当有限,但是网上提供了很多关于天气预报、新闻、星座运势、身份证号、车辆违章、健康医疗、快递查询、ip查询、翻译等的api接口,基本返回数据为类型json和xml
我就喜欢简单便捷的东西,在这解析一下第三方新闻的接口返回的json数据;
我喜欢用谷歌提供的Gson,感觉比JSON去解析要简单,方便,快捷;当然了阿里巴巴提供的fastjson也是极好的,在这只用gson解析了(废话似乎多了点)。
①先看一下我要解析的第三方的数据:(图片看不清可以拖动图片到新的页面标签中看哦~)
②然后从上面可以得到json数据的key值。
③因为Gson是基于对象的,所以我们要将这些 “键值”建立一个实体类
首先可以看到最外层是三个键值 error_code ,reason,result 然后result中为一个json数组,那么我们将json数组中的数据单独抽出一个对象来;
示例代码如下:
package com.zml.pojo;import java.util.List;/** * @author 郑明亮 * @Time:2016-3-18 上午10:28:55 * @version 1.0 */public class NewsJson {String error_code;String reason;List<News> result;public NewsJson(String error_code, String reason, List<News> result) {super();this.error_code = error_code;this.reason = reason;this.result = result;}public NewsJson() {super();// TODO Auto-generated constructor stub}public String getError_code() {return error_code;}public void setError_code(String error_code) {this.error_code = error_code;}public String getReason() {return reason;}public void setReason(String reason) {this.reason = reason;}public List<News> getResult() {return result;}public void setResult(List<News> result) {this.result = result;}@Overridepublic String toString() {return "NewsJson [error_code=" + error_code + ", reason=" + reason+ ", result=" + result + "]";}}
package com.zml.pojo;/** * @author 郑明亮 * @Time:2016-3-18 上午10:27:13 * @version 1.0 */public class News {String ctime;String title;String picUrl;String url;public News(String ctime, String tittle, String picUtl, String url) {super();this.ctime = ctime;this.title = tittle;this.picUrl = picUtl;this.url = url;}public News() {super();// TODO Auto-generated constructor stub}public String getCtime() {return ctime;}public void setCtime(String ctime) {this.ctime = ctime;}public String getTittle() {return title;}public void setTittle(String tittle) {this.title = tittle;}public String getPicUtl() {return picUrl;}public void setPicUtl(String picUtl) {this.picUrl = picUtl;}public String getUrl() {return url;}public void setUrl(String url) {this.url = url;}@Overridepublic String toString() {return "News [ctime=" + ctime + ", tittle=" + title + ", picUtl="+ picUrl + ", url=" + url + "]";}}
④然后就是进行解析了,解析方法我在之前的博文中已经介绍了,如果没看的可以,先看看;
传送门 Andorid之Gson解析Json数据
在这直接将方法列出来了:
public static <T> T getObjectData(String jsonString, Class<T> type) {T t = null;try {Gson gson = new Gson();t = gson.fromJson(jsonString, type);} catch (JsonSyntaxException e) {// TODO Auto-generated catch blocke.printStackTrace();}return t;}
/** * 将输入流转换为byte[] * * @param is * @return */public static byte[] IsToByte(InputStream is) {ByteArrayOutputStream bos = new ByteArrayOutputStream();byte buffer[] = new byte[1024];int len = 0;try {while ((len = is.read(buffer)) != -1) {bos.write(buffer, 0, len);}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();return null;} finally {try {bos.flush();bos.close();is.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}return bos.toByteArray();}
⑤测试解析方法:
package com.zml.pojo.test;import static org.junit.Assert.*;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import java.net.URLConnection;import org.junit.Test;import com.zml.pojo.NewsJson;import com.zml.utils.GsonTools;/** * @author 郑明亮 * @Time:2016年3月18日 上午10:35:39 * @version 1.0 */public class TestGsonAPI {@Testpublic void test() {try {URL url = new URL("http://api.avatardata.cn/TechNews/Query?key=5e3bedcfa2714e36a3e46dd2efce00d9&page=1&rows=10");HttpURLConnection connection = (HttpURLConnection) url.openConnection();//String data = connection.getContentType();String dataString = new String(GsonTools.IsToByte(connection.getInputStream()),"utf-8");NewsJson newsJson = GsonTools.getObjectData(dataString, NewsJson.class);System.out.println(newsJson.toString());System.out.println(dataString);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
数据太多了,只截图了一部分数据:(图片看不清可以拖动图片到新的页面标签中看哦~)
2 0
- Gson解析第三方提供Json数据(天气预报,新闻等)
- Andorid中使用Gson和Fast-json解析库解析JSON数据---第三方库学习笔记(二)
- 解析JSON数据的详细步骤以及偷懒技巧(使用第三方库GSON以及GsonFormat工具)
- Android中JSON数据解析:系统自带JSONObject以及第三方GSON的实现
- 关于解析json— 使用第三方库Gson
- json数据解析(gson)
- android json解析(fastjson,Gson等)
- Gson解析Json数据
- Gson解析Json数据
- Gson解析Json数据
- Gson解析json数据
- Gson解析json数据
- Gson解析Json数据
- Gson解析Json数据
- gson 解析json数据
- GSON解析json数据
- Gson解析Json数据
- Gson解析Json数据
- JPush(极光推送)实战总结
- Ubuntu环境下配置J2EE开发环境jdk+tomcat+mysql+myeclipse
- std::bind
- 数据库事务知识梳理.概念
- 写给 iOS 开发者的 Hopper + lldb 简介
- Gson解析第三方提供Json数据(天气预报,新闻等)
- Android 定制自己的launcher
- POJ 1679 The Unique MST(判断MST是否唯一)
- 再次启航,留下每一步脚印
- 使用 Sass 美化表单控件(一)
- github下Permission denied (publickey)问题.
- 一个C语言写的简单的单词识别程序附带VS性能分析结果
- Shell 符号 $0, $#, $*, $@, $?, $$
- Java finally语句到底是在return之前还是之后执行?