Android JSON数据与实体类之间的相互转化(GSON的用法)
程序员文章站
2024-02-22 21:09:10
这篇文章就是示范如何用gson把json数据与实体类进行相互转化,需要用到gson-2.3.1.jar这个包。直接贴代码了:
import java.la...
这篇文章就是示范如何用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看结果吧,如果导入的话,使用的时候需要注意一点,就是点第一个按钮才能开始点第二个按钮,点第三个按钮才能开始点第四个按钮,不然会报错,原因我就不解释了,在代码里自己看吧。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
推荐阅读
-
Android JSON数据与实体类之间的相互转化(GSON的用法)
-
Android JSON数据与实体类之间的相互转化(GSON的用法)
-
使用谷歌Gson实现Json数据与Java对象、List、Map之间的相互转换笔记
-
datatable与实体类之间相互转化的几种方法
-
速战速决 6 - PHP: 获取 http 请求数据, 获取 get 数据 和 post 数据, json 字符串与对象之间的相互转换
-
速战速决 (6) - PHP: 获取 http 请求数据, 获取 get 数据 和 post 数据, json 字符串与对象之间的相互转换 - webabcd
-
速战速决 (6) - PHP: 获取 http 请求数据, 获取 get 数据 和 post 数据, json 字符串与对象之间的相互转换 - webabcd
-
json数据与字符串的相互转化示例_javascript技巧
-
datatable与实体类之间相互转化的几种方法
-
json数据与字符串的相互转化示例_javascript技巧