`

Android解析Json(Google Gson)

 
阅读更多

什么是JSON?

1.JSON:Javascript Object Nation

2.JSON是一系列键值对的集合

3.JSON以经被大多数开发人员接受,在网络数据传输中应用相当广泛

4.JSON相对XML来说解析相对方便一些

 

JSON vs XML

1.JSON 和 XML 可读性基本相同

2.JSON 和 XML 同样有丰富的解析手段

3.JSON相对XML来说体积数据小

4.JSON和Javascript的交互更加方便

5.JSON对数据的描述性相对较差

 

有什么不懂的可以去官网去看看:www.json.org


在google android中也有关于解析JSON的类库:JsonReader,但是只能在3.0以后的版本中才可以用,在这里我们用google提供的类库google-gson,可以从code.google.com/p/google-gson/下载jar包。


下面通过一个小例子来学习一下:


例子:

[{"name":"zhangsan","age":22},{"name":"lisi","age":23}]

分析:

1.开始解析数组

2.开始解析对象

3.解析键值对

4.解析键值对

5.解析对象结束

6.开始解析对象

7.解析键值对

8.解析键值对

9.解析对象结束

10.解析数组结束



下面的是一个Activity,很简单只有一个button,并为button添加单击事件,

 

Java代码 复制代码 收藏代码
  1. package com.tony.json;
  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. import android.view.View;
  5. import android.widget.Button;
  6. public class JsonActivity extends Activity {
  7. /** Called when the activity is first created. */
  8. private String jsonData = "[{\"name\":\"zhangsan\",\"age\":22},{\"name\":\"lisi\",\"age\":23}]";
  9. private Button jsonButton;
  10. @Override
  11. public void onCreate(Bundle savedInstanceState) {
  12. super.onCreate(savedInstanceState);
  13. setContentView(R.layout.main);
  14. jsonButton = (Button) findViewById(R.id.json_button);
  15. jsonButton.setOnClickListener(new View.OnClickListener() {
  16. @Override
  17. public void onClick(View v) {
  18. JsonUtils jsonUtils = new JsonUtils();
  19. jsonUtils.parseJson(jsonData);
  20. }
  21. });
  22. }
  23. }
package com.tony.json;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class JsonActivity extends Activity {
    /** Called when the activity is first created. */
	
	private String jsonData = "[{\"name\":\"zhangsan\",\"age\":22},{\"name\":\"lisi\",\"age\":23}]";
	private Button jsonButton;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        jsonButton = (Button) findViewById(R.id.json_button);
        jsonButton.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View v) {
				JsonUtils jsonUtils = new JsonUtils();
				jsonUtils.parseJson(jsonData);
			}
		});
    }
}

 

 

这个类中主要是解析json数组:

 

Java代码 复制代码 收藏代码
  1. package com.tony.json;
  2. import java.io.IOException;
  3. import java.io.StringReader;
  4. import android.util.Log;
  5. import com.google.gson.stream.JsonReader;
  6. public class JsonUtils {
  7. private static final String TAG = "JsonUtils";
  8. public void parseJson(String jsonData){
  9. JsonReader reader = new JsonReader(new StringReader(jsonData));
  10. try {
  11. reader.beginArray(); // 开始解析数组
  12. while (reader.hasNext()) {
  13. reader.beginObject(); // 开始解析对象
  14. while (reader.hasNext()) {
  15. String tagName = reader.nextName(); // 得到键值对中的key
  16. if (tagName.equals("name")) { // key为name时
  17. Log.i(TAG, "name--------->" + reader.nextString()); // 得到key中的内容
  18. }else if (tagName.equals("age")) { // key为age时
  19. Log.i(TAG, "age--------->" + reader.nextInt()); // 得到key中的内容
  20. }
  21. }
  22. reader.endObject();
  23. }
  24. reader.endArray();
  25. } catch (IOException e) {
  26. e.printStackTrace();
  27. }
  28. }
  29. }
package com.tony.json;

import java.io.IOException;
import java.io.StringReader;

import android.util.Log;

import com.google.gson.stream.JsonReader;

public class JsonUtils {
	private static final String TAG = "JsonUtils";
	
	public void parseJson(String jsonData){
		JsonReader reader = new JsonReader(new StringReader(jsonData));
		try {
			reader.beginArray();	// 开始解析数组

			while (reader.hasNext()) {
				reader.beginObject();	// 开始解析对象
				while (reader.hasNext()) {
					String tagName = reader.nextName();	// 得到键值对中的key
					if (tagName.equals("name")) {	// key为name时
						Log.i(TAG, "name--------->" + reader.nextString());	// 得到key中的内容
					}else if (tagName.equals("age")) {	// key为age时
						Log.i(TAG, "age--------->" + reader.nextInt());	// 得到key中的内容
					}
				}
				reader.endObject();
			}
			reader.endArray();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

下面是运行后在logcat中打印出的结果:

 

 

 

分享到:
评论

相关推荐

    android之json和gson数据解析最完整的代码例子(包括各种样式的json数据)

    在Android中,我们通常使用`org.json`库或`com.google.gson`库来解析JSON数据。 1. `org.json`库:这是Android SDK自带的一个轻量级库,主要用于解析简单的JSON数据。 - JSONObject:表示一个JSON对象,可以通过`...

    Gson解析复杂Json实例,超简单

    在解析JSON之前,我们需要根据JSON的结构创建对应的Java类。假设我们有以下JSON数据: ```json { "users": [ { "name": "张三", "age": 25, "address": { "city": "北京", "country": "中国" } }, { ...

    Android Studio下使用Google Gson解析Json数据示例

    本篇文章将详细介绍如何在Android Studio环境下使用Google Gson解析Json数据。 首先,我们需要在项目中引入Gson库。打开build.gradle模块文件,并在dependencies块中添加以下依赖: ```groovy dependencies { ...

    JSON、GSON解析json

    3. 使用GSON解析JSON: - 创建Java对象:首先,你需要创建对应的Java类,这些类的字段名应与JSON中的键对应。 - 创建Gson实例:`Gson gson = new Gson();` - 将JSON字符串转换为Java对象:`MyObject obj = gson....

    Json解析Gson解析

    而Gson是Google开发的一个Java库,用于将Java对象转换为JSON格式的字符串,以及将JSON数据转换回等效的Java对象。本篇文章将深入探讨JSON解析以及Gson库的使用方法。 一、JSON解析基础 JSON是一种独立于语言的数据...

    Gson解析json数据

    在本文中,我们将深入探讨如何使用Gson解析JSON数据,包括处理简单JSON和复杂的JSON结构。 首先,我们要了解JSON的基本概念。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,...

    AndroidJSON解析框架GSON

    **Android JSON解析框架GSON详解** 在Android应用开发中,数据交换经常采用JSON格式,因为它轻量级、易于阅读和编写,并且被广泛支持。为了高效地解析和生成JSON,Google提供了一个强大的库——GSON。GSON允许将...

    通过Gson解析Json文件

    本篇文章将详细阐述如何使用Gson库解析JSON文件,帮助开发者理解并掌握这一技能。 首先,我们需要了解什么是JSON。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于...

    android中gson解析json数据例程

    本篇文章将详细介绍如何在Android应用中使用Gson库解析JSON数据,以便更好地理解这一关键知识点。 首先,我们要了解JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于...

    Eclipse下使用Google Gson解析Json数据示例+Android Studio下使用Google Gson解析Json数据示例

    本文将详细介绍如何在Eclipse和Android Studio环境下使用Gson库来解析Json数据。 首先,我们来看Eclipse下的Gson使用示例。在Eclipse中,你需要先引入Gson库。这可以通过在项目构建路径中添加Gson的jar文件完成,...

    Android_JSON数据解析

    总结,Android中解析JSON数据涉及的关键知识点包括JSON的基本结构、Gson库的使用、JSONObject和JSONArray的操作、Volley库的网络请求以及Retrofit框架的使用。这些工具和技术使得Android开发者能够高效地处理服务器...

    Android应用源码之Android 解析json_dome.zip

    在Android中,我们通常使用`org.json`库或者Gson库来解析JSON数据。`org.json`库提供了一些基本的类如`JSONObject`和`JSONArray`,用于解析JSON对象和数组。 1. **使用org.json解析JSON对象:** 当接收到一个JSON...

    老罗android 解析json数据源码

    本教程聚焦于老罗讲解的Android解析JSON数据的源码分析,这对于深入理解JSON处理以及优化应用程序性能至关重要。 首先,我们需要了解JSON的基本结构。JSON是一种基于键值对的格式,数据以键值对的形式存储,如{"key...

    使用gson解析json

    使用Gson解析JSON JSON(JavaScript Object Notation)是一种轻量级的文本数据交换格式,独立于语言和平台,使用JavaScript语法来描述数据对象。JSON具有自我描述性,更易理解。JSON解析器和JSON库支持许多不同的...

    Android解析Json数据的PPT和源码

    这个资料包包含了一个关于Android解析JSON数据的PPT和源码,可以帮助开发者深入理解和实践Android中如何处理JSON数据。 首先,我们要理解JSON的基本结构。JSON由键值对组成,键用引号括起来,后跟冒号,值可以是...

    Android中Json数据解析三种方式:原生、Gson、FastJson

    本文将详细介绍在Android中解析JSON数据的三种常见方法:原生JSON库、Gson库以及FastJson库。每种方法都有其特点和适用场景,开发者可以根据实际需求选择合适的方法。 ### 1. 原生JSON库 Android系统本身提供了...

    Android 解析json_dome.zip

    2. **Android解析JSON的库** 在Android中,我们通常使用两种库来解析JSON数据: - `org.json`:这是Android SDK自带的库,提供了JSONObject和JSONArray类,可以方便地解析JSON对象和数组。 - `...

    google json: gson

    这使得开发者无需手动解析JSON字符串,从而极大地提高了开发效率。 2. **JSON与Java对象的映射** Gson的核心在于能够自动映射Java类的字段到JSON对象的属性,反之亦然。它支持基本数据类型、复杂对象结构,包括...

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

    本文将详细介绍如何利用Google的Gson库在Android中解析JSON数据。 首先,为了在Android项目中使用Gson库,你需要从`code.google.com/p/google-gson/downloads/list`下载最新版本的GsonAPI,例如`google-gson-1.7.1-...

    谷歌GSON-解析JSON(Demo)

    **标题:** 谷歌GSON - 解析JSON(Demo) **正文:** 在Android开发中,数据交换经常涉及到JSON格式,而GSON库是Google提供的一个强大的JSON处理库,它使得Java对象与JSON数据之间的转换变得极其简单。本篇文章将...

Global site tag (gtag.js) - Google Analytics