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

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 TypeToken<LinkedList<User>>(){}.getType();

Gson gson = new Gson();

LinkedList<User> 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());

时间: 2024-12-28 07:52:11

Android中使用Gson解析JSON数据的两种方法的相关文章

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

Json是一种类似于XML的通用数据交换格式,具有比XML更高的传输效率. 从结构上看,所有的数据(data)最终都可以分解成三种类型: 第一种类型是标量(scalar),也就是一个单独的字符串(string)或数字(numbers),比如"北京"这个单独的词. 第二种类型是序列(sequence),也就是若干个相关的数据按照一定顺序并列在一起,又叫做数组(array)或列表(List),比如"北京,上海". 第三种类型是映射(mapping),也就是一个名/值对(

使用Java构造和解析Json数据的两种方法(详解二)_java

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式.同时,JSON是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON数据不须要任何特殊的 API 或工具包. 在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面接着介绍用org.json构造和解析Json数据的方法

Android 中无法取消标题栏的问题小结(两种方法)_Android

我们都知道取消标题栏有两种方式,一种是在Java代码中取消,另一种通过设置styles.xml文件中的Theme即可:如下图: 第一种: 第二种: 但是运行在Android 5.0 之后发现已经无法达到想要的效果,这时候可以怎么处理呢?只需要更改一行代码即可. 我们可以通过更改styles.xml文件中的Theme继承即可实现目的,如下图:

Android 中无法取消标题栏的问题小结(两种方法)

我们都知道取消标题栏有两种方式,一种是在Java代码中取消,另一种通过设置styles.xml文件中的Theme即可:如下图: 第一种: 第二种: 但是运行在Android 5.0 之后发现已经无法达到想要的效果,这时候可以怎么处理呢?只需要更改一行代码即可. 我们可以通过更改styles.xml文件中的Theme继承即可实现目的,如下图: 以上所述是小编给大家介绍的Android 中无法取消标题栏的问题小结,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的.在此也非常感谢

Android中Activity和Fragment传递数据的两种方式

1.第一种方式,也是最常用的方式,就是使用Bundle来传递参数 MyFragment myFragment = new MyFragment(); Bundle bundle = new Bundle(); bundle.putString("DATA",values);//这里的values就是我们要传的值 myFragment.setArguments(bundle); 然后在Fragment中的onCreatView方法中,通过getArgments()方法,获取到bundle

gson-在Android中使用Gson解析json

问题描述 在Android中使用Gson解析json public class GeRen extends Activity { private ArrayList s_list; private TextView type,opendate,name,sex,enddate; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCrea

Android网络之数据解析----使用Google Gson解析Json数据

[正文] 文章回顾: Android网络之数据解析----SAX方式解析XML数据 一.Json数据的介绍                                                                                                                 Json(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于JS的一个子集. Json采用完全独立于语言的文本格式,这使得Jso

利用GSON解析JSON数据

main.xml如下: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools

json-关于gson解析Json数据出现错误

问题描述 关于gson解析Json数据出现错误 代码如下: private ResponseGetUserByUserId resp; public void onSuccess(int statusCode Header[] headers byte[] responseBody) { String jsonData = new String(responseBody); Log.d(TAGSuccess: "" + jsonData); resp = new Gson().from