日期:2014-05-16  浏览次数:20394 次

json数据解析二

这一篇我们将采用Gson类来解析json数据。把json解析出的数据传递给Person对象,这样我们就可以从Person对象中获得我们想要的数据。

res/layout/main.xml中添加一个Button按钮:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<Button
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="开始json数据解析"
    android:id="@+id/button"
    />
</LinearLayout>?

?

由于为了方便,我把用到的类写在了一个java文件里面,代码如下:

import java.lang.reflect.Type;
import java.util.Iterator;
import java.util.LinkedList;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

public class JsonTestMy1 extends Activity {
    
	private String JsonData = "[{\"name\":\"huangwei\",\"age\":24,\"name\":\"lisi\",\"age\":36}]";
	private Button button = null;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        button = (Button) findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View v) {
				JsonUtils.paresJsonData(JsonData);
			}
		});
    }
}

class JsonUtils {
	public static void paresJsonData(String str){
		//通过TypeToken对象获取type对象,由于TypeToken对象中的构造方法都是受保护的,
		//所以我们要生成TypeToken的实例通过TypeToken的getType()方法获取Type对象
		Type type = new TypeToken<LinkedList<Person>>(){}.getType();
		Gson gson = new Gson();
		LinkedList<Person> persons = gson.fromJson(str, type);
		for(Iterator<Person> iterator = persons.iterator();iterator.hasNext();){
			Person person = iterator.next();
			System.out.println(person.toString());
		}
	}
}

class Person {
	private String name;
	private int age;
	
	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;
	}
	@Override
	public String toString() {
		return "Person [name=" + name + ", age=" + age + "]";
	}
}

以上就完成了简单的json数据的解析,并把数据放到一个javabean中,当然复杂的数据解析也是这个道理。?