Android-网页解析-gson的使用
相对于较为传统的Json解析来说,google共享的开源Gson在解析速度和所使用的内存在有着明显的优势,虽然说阿里巴巴也提供了fastgson包,但是它跟Gson的处理速度大同小异,只是底层实现的原理不同,在这里就来学习一下怎么使用google的开源包Gson(在学习之间你应该下载好google gson包)
Gson的解析非常简单,但是它的解析规则是必须有一个bean文件,这个bean文件的内容跟JSon数据类型是一一对应的
|
public class user { |
Gson有两个重要的方法,一个就是tojson,一个就是fromjson。
tojson就是将bean里面的内容转换为json内容
|
user u=new Gson g=new //打印结果是{"name":"zhangsan","age":19} |
当然它还可以承担一些复杂的操作,比如通过集合插入一组数据
|
List<user> //打印结果是[{"name":"zhangsan","age":19},{"name":"zhangsan2","age":19}] //注意,对于Json而言,【】代表数组,{}代表一个对象 |
当然它还可以实现更复杂的对象,在一个Json对象中再嵌套一个Json对象,因为涉及到要更改user内容,这边就不演示了
2、fromjson,从我们的Json对象封装出一个一个的bean对象
|
user System.out.println(u.getName()+" //打印结果是zhangsan 12 |
如果你的Json里面不止一个对象,那么你就得使用一个集合来装,我们这里模拟一个list来装的例子,在使用list装的过程中我们会使用到一个工具类,typeToken,通过它我们可以获取一个泛型的数据类型,使用方法十分简单,TypeToken(泛型)(){}.gettype()即可,返回一个type类型,这就是fromjson所需要的type类型,来自于reflect包
|
user //打印结果是zhangsan 12 //lisi 12 |
下面用个例子,简单的介绍gson如何解析json,仅使用~
先发两个json 内容
1、最外层是{}
{
"resp":
"ok",
"result": {
"date":
"2013-4-19 16:55:58",
"focus":
[
{
"summary":
"简介",
"title":
"标题",
"url":
"http://www.ceshi.com"
},
{
"summary":
"简介22",
"title":
"标题22",
"url":
"http://www.ceshi22.com"
}
],
"items":
[
{
"id":
"11",
"name":
"名称",
"price":
"88.88"
},
{
"id":
"22",
"name":
"名称22",
"price":
"100"
}
]
}
}
2、外层是[]
[
{
"addr":
"北京",
"age":
"22",
"name":
"zeng"
},
{
"addr":
"上海",
"age":
"20",
"name":
"zhang"
},
{
"addr":
"深圳",
"age":
"25",
"name":
"wang"
}
]
###**一、使用Gson,解析,关键的就是定义好JavaBean类对象**
1、***定义{}类型的JavaBean类***
Bean.java
public class Bean { //若实现Serializable接口,则不用写下面的SerializedName("字段名"),但成员变量名称必须与json中一样
// @SerializedName("resp")
// private String respone;//假如变量命名与解析数据不同,则加上@SerializedName("")
private String resp;
private Result result;
//....下面省略 set
,get
//resultBean类
Result.java
public class Result {
private String
date;
private List<FocusItem>
focus;
private List<Item>
items;
}
FocusItem.java
public class FocusItem
{
private String
title;
private String
summary;
private String url;
}
Item.java
public class Item
{
private String
name;
private int id;
private float price;
}
2、***定义{}类型的JavaBean类***
Info.java
public class Info {
private String
name;
private int age;
private String addr;
}
###**二、解析代码,一个最外层是{} 一个是[]**
private void parse() {
Gson gson = new
Gson();
switch (type) {
//最外层是{},封装为一个对象
case OBJ:
Bean
fromJson = gson.fromJson(readContent, Bean.class);
System.out.println(fromJson.toString());
break;
//最外层是[],封装为一个数组对象
case ARR:
Type
type = new TypeToken<List<Info>>() {}.getType();
Object
fromJson2 = gson.fromJson(readContent, type);
List<Info>
list = (List<Info>) fromJson2;
break;
}
}
Android-网页解析-gson的使用的更多相关文章
- Android JSON、GSON、FastJson的封装与解析
声明: 1.本帖只提供代码,不深入讲解原理.如果读者想要深入了解,那就不要在这个帖子上浪费时间了 2.客户端用的是Google官方的Volley访问服务器,具体了解Volley请戳 这里 3.本帖三种 ...
- Android中使用Gson解析JSON数据的两种方法
Json是一种类似于XML的通用数据交换格式,具有比XML更高的传输效率;本文将介绍两种方法解析JSON数据,需要的朋友可以参考下 Json是一种类似于XML的通用数据交换格式,具有比XML更高的 ...
- Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例
Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例 继上篇json解析,我用了原生的json解析,但是在有些情况下我们不得不承认,一些优秀的json解析框架确实十分的 ...
- Android中使用Gson解析JSON数据
Android中使用Gson解析JSON数据 在Android中可以使用Gson解析JSON数据 首先,从 code.google.com/p/google-gson/downloads/list ...
- Android Studio下的简单网页解析
Android Studio下的简单网页解析 一.导入数据 导入前添加依赖 implementation 'org.jsoup:jsoup:1.11.3' 使用字符串导入 String html = ...
- Android Volley和Gson实现网络数据加载
Android Volley和Gson实现网络数据加载 先看接口 1 升级接口 http://s.meibeike.com/mcloud/ota/cloudService POST请求 参数列表如下 ...
- 1.Android中解析json程序代码
Android程序解析json数据可以通过gson的方式,这种情况需要导入相应的jar包.测试代码如下: @Override protected void onCreate(Bundle savedI ...
- Android数据解析-JSON解析
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,基于JavaScript(Standard ECMA-262 3rd Edition - December ...
- Android网页浏览器的开发
Android网页浏览器的核心Widget是包含了WebKit的WebView. 首先,布局文件activity_main.xml: <LinearLayout xmlns:android=&q ...
- android XMl 解析神奇xstream 六: 把集合list 转化为 XML文档
前言:对xstream不理解的请看: android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 android XMl 解析神奇xs ...
随机推荐
- 模块 序列化 json pickle shelv xml
序列化 序列化是指把内存里的数据类型转变成字符串,以使其能存储到硬盘或通过网络传输到远程,因为硬盘或网络传输时只能接受bytes. json 模块 json.dump(d,f) json.load(f ...
- Java实现3次找到假球
前言 之前老师让写一个程序,就写了写. 正文 题目要求 程序要求 10个铅球中有一个假球(比其他铅球的重量要轻),用天平三次称出假球. 程序设计思路 第一次使用天平分别称5个球,判断轻的一边有假球:拿 ...
- Java实现tif/tiff/bmp图片转换png图片
package org.analysisitem20181016.test; import java.io.File; import java.io.FileOutputStream; import ...
- stm32:实现呼吸灯
1.main.c #include "sys.h" #include "delay.h" #include "key.h" #define ...
- 数据挖掘-K-近邻算法
数据挖掘-K-近邻算法 目录 数据挖掘-K-近邻算法 1. K-近邻算法概述 1.1 K-近邻算法介绍 1.1.1 KNN算法作用 1.1.2 KNN 算法思想 1.1.3 KNN算法特点 1.2 K ...
- 安装 elasticsearch For LINUX
官网下载地址 https://www.elastic.co/cn/downloads/elasticsearch 选择版本为LINUX 当前版本为 es-7.6.2 用tar 命令解压 tar -zx ...
- HDU1087:Super Jumping! Jumping! Jumping!(DP水题)
Super Jumping! Jumping! Jumping! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 ...
- ubuntu上安装lamp环境命令清单
#install configuration manager sudo apt-get install tasksel #install basic lamp stack sudo tasksel i ...
- Spring(一):Spring入门程序和IoC初步理解
本文是按照狂神说的教学视频学习的笔记,强力推荐,教学深入浅出一遍就懂!b站搜索狂神说或点击下面链接 https://space.bilibili.com/95256449?spm_id_from=33 ...
- 给listview添加长时间点击事件(完成删除操作)
出现的问题是:当长时间点击listview的时候,触发长时间点击事件的同时也会触发点击事件,处理的办法是在长时间点击事件中加上return true:这样就可以很好的解决了. 给listview天机长 ...