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() {@Overridepublic 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;}@Overridepublic String toString() {return "Person [name=" + name + ", age=" + age + "]";}}以上就完成了简单的json数据的解析,并把数据放到一个javabean中,当然复杂的数据解析也是这个道理。?