android JSON数据解析

JSON作为一种“轻量”的数据结构传递数据,在JS中有广泛的应用

Google公司对JSON的解析提供了gson.jar这个包,它不依赖于其他任何JAR包;目前在Android3.0中已经合入了该解析器的功能,但之前的版本是没有的。

findViewById(R.id.parseBtn).setOnClickListener(new OnClickListener(){
	@Override
	public void onClick(View v) {
		jsonData = "[{\"name\":\"Michael\",\"age\":20},{\"name\":\"Mike\",\"age\":21}]";
		MainActivity.parseJson(jsonData);
	}
});

public static void parseJson(String jsonStr){
	//如果要解析JSON数据,首先要有一个JsonReader对象
	JsonReader jsonReader = new JsonReader(new StringReader(jsonStr));
	try {
	//开始遍历数组(多个JSON对象)
		jsonReader.beginArray();
		while(jsonReader.hasNext()){
		//开始遍历JSON对象(含有多个属性)
			jsonReader.beginObject();
			while(jsonReader.hasNext()){
				String tagName = jsonReader.nextName();
				if(tagName.equals("name")){
					System.out.println("name --> " + jsonReader.nextString());
				}else if(tagName.equals("age")){
					System.out.println("age --> " + jsonReader.nextString());
				}
			}
		//遍历JSON对象结束
			jsonReader.endObject();
		}
		//遍历数组结束
		jsonReader.endArray();
	} catch (IOException e) {
		e.printStackTrace();
	}
}

 将JSON格式转换为类的步骤如下:

//先定义一个类
public class User {
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
}

//只将一组数据转换的方法
findViewById(R.id.parseObj).setOnClickListener(new OnClickListener(){
	@Override
	public void onClick(View v) {
		String jsonData = "{\"name\":\"Michael\",\"age\":20}";
		Gson gson = new Gson();
		User user = gson.fromJson(jsonData, User.class);
		System.out.println("name--->" + user.getName());
		System.out.println("age---->" + user.getAge());
		
	}
});

//将多组数据转换的方法
findViewById(R.id.parseObjs).setOnClickListener(new OnClickListener(){
	@Override
	public void onClick(View v) {
		String jsonData = "[{\"name\":\"Michael\",\"age\":20},{\"name\":\"Mike\",\"age\":21}]";
		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("name--->" + user.getName());
			System.out.println("age---->" + user.getAge());
		}
	}
});

 

posted @ 2012-01-02 09:19  胖鹅  阅读(492)  评论(0编辑  收藏  举报