Android中使用Gson解析JSON数据的两种方法

七夕a我娶你

七夕a我娶你

2016-02-19 11:20

下面图老师小编跟大家分享一个简单易学的Android中使用Gson解析JSON数据的两种方法教程,get新技能是需要行动的,喜欢的朋友赶紧收藏起来学习下吧!
Json是一种类似于XML的通用数据交换格式,具有比XML更高的传输效率.
从结构上看,所有的数据(data)最终都可以分解成三种类型:
第一种类型是标量(scalar),也就是一个单独的字符串(string)或数字(numbers),比如"北京"这个单独的词。
第二种类型是序列(sequence),也就是若干个相关的数据按照一定顺序并列在一起,又叫做数组(array)或列表(List),比如"北京,上海"。
第三种类型是映射(mapping),也就是一个名/值对(Name/value),即数据有一个名称,还有一个与之相对应的值,这又称作散列(hash)或字典(dictionary),比如"首都:北京"。
Json的规格非常简单,只用一个页面几百个字就能说清楚,而且Douglas Crockford声称这个规格永远不必升级,因为该规定的都规定了。
1) 并列的数据之间用逗号(",")分隔。
2) 映射用冒号(":")表示。
3) 并列数据的集合(数组)用方括号("[]")表示。
4) 映射的集合(对象)用大括号("{}")表示。

在Android中可以使用Gson解析JSON数据
首先,从 code.google.com/p/google-gson/downloads/list下载GsonAPI:
google-gson-1.7.1-release.zip
把gson-1.7.jar copy到libs(项目根目录新建一个libs文件夹)中。
可以使用以下两种方法解析JSON数据:
通过获取JsonReader对象解析JSON数据:
代码如下:

String jsonData = "[{"username":"arthinking","userId":001},{"username":"Jason","userId":002}]";
try{
JsonReader reader = new JsonReader(new StringReader(jsonData));
reader.beginArray();
while(reader.hasNext()){
reader.beginObject();
while(reader.hasNext()){
String tagName = reader.nextName();
if(tagName.equals("username")){
System.out.println(reader.nextString());
}
else if(tagName.equals("userId")){
System.out.println(reader.nextString());
}
}
reader.endObject();
}
reader.endArray();
}
catch(Exception e){
e.printStackTrace();
}

通过把JSON数据映射成一个对象,使用Gson对象的fromJson()方法获取一个对象数组进行操作:
创建JSON数据对应的一个POJO对象User.java:
代码如下:

public class User {
private String username ;
private int userId ;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
}

使用Gson对象获取User对象数据进行相应的操作:
代码如下:

Type listType = new TypeTokenLinkedListUser(){}.getType();
Gson gson = new Gson();
LinkedListUser users = gson.fromJson(jsonData, listType);
for (Iterator iterator = users.iterator(); iterator.hasNext();) {
User user = (User) iterator.next();
System.out.println(user.getUsername());
System.out.println(user.getUserId());
}

如果要处理的JSON字符串只包含一个JSON对象,则可以直接使用fromJson获取一个User对象:
代码如下:

String jsonData = "{"username":"arthinking","userId":001}";
Gson gson = new Gson();
User user = gson.fromJson(jsonData, User.class);
System.out.println(user.getUsername());
System.out.println(user.getUserId());
展开更多 50%)
分享

猜你喜欢

Android中使用Gson解析JSON数据的两种方法

编程语言 网络编程
Android中使用Gson解析JSON数据的两种方法

在delphi中使用xml文档有两种方法

编程语言 网络编程
在delphi中使用xml文档有两种方法

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Android中使用sax解析xml文件的方法

编程语言 网络编程
Android中使用sax解析xml文件的方法

Excel高效数据校验的两种方法

办公软件
Excel高效数据校验的两种方法

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Android 工程内嵌资源文件的两种方法

编程语言 网络编程
Android 工程内嵌资源文件的两种方法

把数据插入到数据库的两种方法

ASP
把数据插入到数据库的两种方法

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

HTML5 本地存储之如果没有数据库究竟会怎样

HTML5 本地存储之如果没有数据库究竟会怎样

5分钟教会五笔不用背口决

5分钟教会五笔不用背口决
下拉加载更多内容 ↓