`
TonySun3544
  • 浏览: 159909 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android中解析JSON(一)

阅读更多

 

什么是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添加单击事件,

 

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数组:

 

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中打印出的结果:

 

 

 

1
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics