全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Android JSON数据与实体类之间的相互转化(GSON的用法)

这篇文章就是示范如何用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  # 实体类转json  # 实体转json  # android客户端从服务器端获取json数据并解析的实现代码  # Android中使用Gson解析JSON数据的两种方法  # Android中的JSON详细总结  # Android 解析JSON对象及实例说明  # Android中生成、使用Json数据实例  # android+json+php+mysql实现用户反馈功能方法解析  # android 解析json数据格式的方法  # Android中Json数据读取与创建的方法  # Android App数据格式Json解析方法和常见问题  # Android实现读写JSON数据的方法  # Android编程心得分享——JSON学习过程  # 转换为  # 实体类  # 的是  # 李四  # 第一个  # 打印出来  # 需要注意  # 好了  # 就不  # 第二个  # 要用  # 两句  # 这篇文章  # 报错  # 第三个  # 转换成  # 看吧  # 如何用  # 没有人会  # 大家多多 


相关文章: Android使用GridView实现日历的简单功能  建站之星手机一键生成:多端自适应+小程序开发快速建站指南  高性能网站服务器配置指南:安全稳定与高效建站核心方案  青浦网站制作公司有哪些,苹果官网发货地是哪里?  网站制作软件免费下载安装,有哪些免费下载的软件网站?  ,柠檬视频怎样兑换vip?  C#如何使用XPathNavigator高效查询XML  建站之星后台搭建步骤解析:模板选择与产品管理实操指南  网站制作知乎推荐,想做自己的网站用什么工具比较好?    网站制作多少钱一个,建一个论坛网站大约需要多少钱?  如何在Windows环境下新建FTP站点并设置权限?  营销式网站制作方案,销售哪个网站招聘效果最好?  如何在沈阳梯子盘古建站优化SEO排名与功能模块?  宝塔Windows建站如何避免显示默认IIS页面?  Java解压缩zip - 解压缩多个文件或文件夹实例  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  如何通过远程VPS快速搭建个人网站?  网站制作话术技巧,网站推广做的好怎么话术?  建站主机是否等同于虚拟主机?  魔毅自助建站系统:模板定制与SEO优化一键生成指南  公众号网站制作网页,微信公众号怎么制作?  网站制作报价单模板图片,小松挖机官方网站报价?  如何挑选高效建站主机与优质域名?  交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?  如何通过虚拟主机快速搭建个人网站?  广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?  如何零基础开发自助建站系统?完整教程解析  北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?  如何在云主机上快速搭建网站?  制作假网页,招聘网的薪资待遇,会有靠谱的吗?一面试又各种折扣?  网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?  官网网站制作腾讯审核要多久,联想路由器newifi官网  小建面朝正北,A点实际方位是否存在偏差?  如何选择高效稳定的ISP建站解决方案?  建站之星后台密码遗忘如何找回?  中山网站推广排名,中山信息港登录入口?  打鱼网站制作软件,波克捕鱼官方号怎么注册?  建设网站制作价格,怎样建立自己的公司网站?  建站三合一如何选?哪家性价比更高?  贸易公司网站制作流程,出口贸易网站设计怎么做?  盘锦网站制作公司,盘锦大洼有多少5G网站?  Android滚轮选择时间控件使用详解  如何用低价快速搭建高质量网站?  建站主机选哪家性价比最高?  常州自助建站费用包含哪些项目?  如何用西部建站助手快速创建专业网站?  股票网站制作软件,网上股票怎么开户?  如何通过cPanel快速搭建网站?  如何在IIS管理器中快速创建并配置网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。