
这篇文章就是示范如何用GSON把JSON数据与实体类进行相互转化,需要用到gson-2.3.1.jar这个包。直接贴代码了:
import java.lang.reflect.Type;import java.util.ArrayList;import java.util.List;import com.google.gson.Gson;import com.google.gson.GsonBuilder;import com.google.gson.reflect.TypeToken;import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class MainActivity extends Activity implements OnClickListener {private Button bt_shitiToJson;private Button bt_jsonToShiti;private Button bt_jsonToList;private Button bt_listToJson;private Gson gson;private GsonBuilder builder;private Person person;private String jsonTest,jsonListTest;private List<Person> persons;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);init();}private void init() {//寻找控件bt_shitiToJson=(Button) findViewById(R.id.bt_shitiToJson);bt_jsonToShiti=(Button) findViewById(R.id.bt_jsonToShiti);bt_listToJson=(Button) findViewById(R.id.bt_listToJson);bt_jsonToList=(Button) findViewById(R.id.bt_jsonToList);//增加点击事件bt_shitiToJson.setOnClickListener(this);bt_jsonToShiti.setOnClickListener(this);bt_listToJson.setOnClickListener(this);bt_jsonToList.setOnClickListener(this);//这两句代码必须的,为的是初始化出来gson这个对象,才能拿来用builder=new GsonBuilder();gson=builder.create();//先制造出一个"人",第一个按钮点击的时候要用到person=new Person();person.setName("张三");person.setAge(20);person.setTall(160);}@Overridepublic void onClick(View v) {switch(v.getId()){case R.id.bt_shitiToJson://实体类转换为json数据jsonTest=gson.toJson(person, Person.class);Log.e("test", jsonTest);//打印出来结果为// {"name":"张三","age":20,"tall":160}break;case R.id.bt_jsonToShiti://json数据转换为实体类Person p=gson.fromJson(jsonTest, Person.class);Log.e("test", p.getName()+" "+p.getAge()+" "+p.getTall());//打印出来结果为//张三 20 160break;case R.id.bt_listToJson://存储实体类的集合转换为json数据集合//手动制造一个存有三人信息的集合,以便进行测试persons=new ArrayList<Person>();for(int i=0;i<3;i++){Person p1=new Person();p1.setName("李四"+i);p1.setAge(23+i);p1.setTall(165+i);persons.add(p1);}//persons被制造好了,现在开始测试//需要注意的是这里的Type导入的是java.lang.reflect.Type的包//TypeToken导入的是 com.google.gson.reflect.TypeToken的包Type type=new TypeToken<List<Person>>(){}.getType();jsonListTest=gson.toJson(persons, type);Log.e("test", jsonListTest);//打印出来的数据// [{"name":"李四0","age":23,"tall":165},{"name":"李四1","age":24,"tall":166},{"name":"李四2","age":25,"tall":167}]break;case R.id.bt_jsonToList://json数据的集合转换为存储实体类的集合List<Person> p2=new ArrayList<Person>();Type type1=new TypeToken<List<Person>>(){}.getType();p2=gson.fromJson(jsonListTest, type1);Log.e("test", p2.size()+"");//打印了存储实体类集合的大小,不用看啦,,大小肯定是3//打印结果//3break;}}}
Person这个类:
public class Person {//人的名称private String name;//人的年龄private int age;//人的身高private int tall;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;}public int getTall() {return tall;}public void setTall(int tall) {this.tall = tall;}}
activity_main.xml文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><TextViewandroid:id="@+id/textView1"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center_horizontal"android:text="使用GSON进行JSON数据的处理"android:textColor="#353535"android:textSize="17sp"android:textStyle="bold"android:layout_marginTop="20dip" /><Buttonandroid:id="@+id/bt_shitiToJson"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="实体类转换为JSON数据" android:layout_marginTop="10dip" /><Buttonandroid:id="@+id/bt_jsonToShiti"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="JSON数据转换成实体类"android:onClick="bt_create_student"android:layout_marginTop="10dip" /><Buttonandroid:id="@+id/bt_listToJson"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="存有实体类的集合转换为JSON数据集合"android:layout_marginTop="10dip" /><Buttonandroid:id="@+id/bt_jsonToList"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="JSON数据集合转换为存有实体类的集合" android:layout_marginTop="10dip" /></LinearLayout>
这个DEMO太简单了,估计没有人会导入到eclipse看结果吧,如果导入的话,使用的时候需要注意一点,就是点第一个按钮才能开始点第二个按钮,点第三个按钮才能开始点第四个按钮,不然会报错,原因我就不解释了,在代码里自己看吧。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。