国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android JSON數據與實體類之間的相互轉化(GSON的用法)

2019-12-12 04:03:53
字體:
來源:轉載
供稿:網友

這篇文章就是示范如何用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;  @Override  protected 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);  }  @Override  public 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 160      break;    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      //打印結果      //3      break;    }  }}

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"  >  <TextView    android: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" />  <Button    android:id="@+id/bt_shitiToJson"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:text="實體類轉換為JSON數據"     android:layout_marginTop="10dip" />  <Button    android: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" />  <Button    android:id="@+id/bt_listToJson"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:text="存有實體類的集合轉換為JSON數據集合"    android:layout_marginTop="10dip" />  <Button    android:id="@+id/bt_jsonToList"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:text="JSON數據集合轉換為存有實體類的集合"     android:layout_marginTop="10dip" /></LinearLayout>

這個DEMO太簡單了,估計沒有人會導入到eclipse看結果吧,如果導入的話,使用的時候需要注意一點,就是點第一個按鈕才能開始點第二個按鈕,點第三個按鈕才能開始點第四個按鈕,不然會報錯,原因我就不解釋了,在代碼里自己看吧。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 孟村| 无为县| 集贤县| 顺昌县| 舞钢市| 镇赉县| 穆棱市| 嘉兴市| 衡东县| 昌都县| 桃园县| 关岭| 长阳| 剑阁县| 英山县| 当涂县| 托克托县| 汉沽区| 眉山市| 庆安县| 恩施市| 临潭县| 临泉县| 郧西县| 桂林市| 施甸县| 花莲市| 鲁甸县| 内黄县| 满城县| 琼中| 多伦县| 岑巩县| 和平县| 友谊县| 达尔| 平谷区| 五大连池市| 山东省| 繁峙县| 阳信县|