有什么不懂的可以去官网去看看: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添加单击事件,

01 package com.tony.json;
02   
03 import android.app.Activity;
04 import android.os.Bundle;
05 import android.view.View;
06 import android.widget.Button;
07   
08 public class JsonActivity extends Activity {
09     /** Called when the activity is first created. */
10       
11     private String jsonData = "[{\"name\":\"zhangsan\",\"age\":22},{\"name\":\"lisi\",\"age\":23}]";
12     private Button jsonButton;
13     @Override
14     public void onCreate(Bundle savedInstanceState) {
15         super.onCreate(savedInstanceState);
16         setContentView(R.layout.main);
17         jsonButton = (Button) findViewById(R.id.json_button);
18         jsonButton.setOnClickListener(new View.OnClickListener() {
19               
20             @Override
21             public void onClick(View v) {
22                 JsonUtils jsonUtils = new JsonUtils();
23                 jsonUtils.parseJson(jsonData);
24             }
25         });
26     }
27 }

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

01 package com.tony.json;
02   
03 import java.io.IOException;
04 import java.io.StringReader;
05   
06 import android.util.Log;
07   
08 import com.google.gson.stream.JsonReader;
09   
10 public class JsonUtils {
11     private static final String TAG = "JsonUtils";
12       
13     public void parseJson(String jsonData){
14         JsonReader reader = new JsonReader(new StringReader(jsonData));
15         try {
16             reader.beginArray();    // 开始解析数组
17             while (reader.hasNext()) {
18                 reader.beginObject();   // 开始解析对象
19                 while (reader.hasNext()) {
20                     String tagName = reader.nextName(); // 得到键值对中的key
21                     if (tagName.equals("name")) {   // key为name时
22                         Log.i(TAG, "name--------->" + reader.nextString());  // 得到key中的内容
23                     }else if (tagName.equals("age")) {  // key为age时
24                         Log.i(TAG, "age--------->" + reader.nextInt());  // 得到key中的内容
25                     }
26                 }
27                 reader.endObject();
28             }
29             reader.endArray();
30         } catch (IOException e) {
31             e.printStackTrace();
32         }
33     }
34 }

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

Android 中解析 JSON的更多相关文章

  1. 1.Android中解析json程序代码

    Android程序解析json数据可以通过gson的方式,这种情况需要导入相应的jar包.测试代码如下: @Override protected void onCreate(Bundle savedI ...

  2. Android中解析JSON形式的数据

    1.JSON(JavaScript Object Notation) 定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式, ...

  3. android 中解析json格式数据

    本文来自http://tonysun3544.iteye.com/category/188238 package com.tony.json; import android.app.Activity; ...

  4. Android中解析JSON格式数据常见方法合集

    待解析的JSON格式的文件如下: [{"id":"5", "version":"1.0", "name&quo ...

  5. Android中解析Json数据

    在开发中常常会遇到解析json的问题 在这里总结几种解析的方式: 方式一: json数据: private String jsonData = "[{\"name\":\ ...

  6. [入门阅读]怎样在android中解析JSON

    JSON入门介绍:http://kirin.javaeye.com/blog/616226 也参考了此篇:http://blog.163.com/fushaolin@126/blog/static/1 ...

  7. 实现android上解析Json格式数据功能

    实现android上解析Json格式数据功能,该源码转载于安卓教程网的,http://android.662p.com ,个人感觉还不错的,大家可以看看一下吧. package com.practic ...

  8. android中解析文件的三种方式

    android中解析文件的三种方式     好久没有动手写点东西了,最近在研究android的相关技术,现在就android中解析文件的三种方式做以下总结.其主要有:SAX(Simple API fo ...

  9. [置顶] Android学习系列-Android中解析xml(7)

    Android学习系列-Android中解析xml(7) 一,概述 1,一个是DOM,它是生成一个树,有了树以后你搜索.查找都可以做. 2,另一种是基于流的,就是解析器从头到尾解析一遍xml文件.   ...

随机推荐

  1. C++中的容器类详解

    一.STL容器类 STL(Standard Template Library)的六大组件:容器(containers).迭代器(iterators).空间配置器(allocator).配接器(adap ...

  2. 【转发】Linux下清除系统日志方法

    摘要:相信大家都是用过Windows的人.对于Windows下饱受诟病的各种垃圾文件都需要自己想办法删除,不然你的系统将会变得越来越大,越来越迟钝!windows怎么清理垃圾相信大家都知道的,那么li ...

  3. OpenCV之响应鼠标(三):响应鼠标信息

    转自:http://blog.csdn.net/haihong84/article/details/6599838 程序代碼如下: #include <cv.h>#include < ...

  4. iOS 网络判定

    由于流量精灵需要在 蜂窝数据或者3G 环境下进行流量监控因此需要判定3G 环境 将 SystemConfiguration.framework 添加进工程: 引入头文件 #import <Sys ...

  5. Deployment failed due to an error in FastDev assembly synchronization.

    在编译的时候发生Assembly synchronization error,显示信息为:Deployment failed due to an error in FastDev assembly s ...

  6. hdu 1069

    //Accepted 264 KB 0 ms //每种block只有三种方法,且每种放法至多放一次 //规定三条边的顺序后 //把所有的block按x递增排序,x相同则按y递增排序 //然后dp // ...

  7. 属性的定义以及@synthesize的使用

    1.属性通常是指某些由对象封装或储存的数据.它可以是标志(如名称或颜色),也可以是与一个或多个其他对象的关系. 2.属性的基本声明使用 @property 编译器指令,后面紧跟属性的类型信息和名称.您 ...

  8. php大力力 [009节]php在百度文库的几个基础教程

    2015-08-23 php大力力009. php在百度文库的几个基础教程 php大力力 [009节]php在百度文库的几个基础教程 PHP脚本中操作MySQL数据库3-猿代码平台 php基础教程-绝 ...

  9. Matrix_二维树状数组

    Description Given an N*N matrix A, whose elements are either 0 or 1. A[i, j] means the number in the ...

  10. Android Listener 监听的几种写法

    Android中,View的Listener方法,在是否使用匿名类匿名对象时,有各种不同的写法. OnClickListener和其他Listener方法一样,都是View类的接口,重载实现后就能使用 ...