1. //转换器
  2. GsonBuilder builder = new GsonBuilder();
  3. // 不转换没有 @Expose 注解的字段
  4. builder.excludeFieldsWithoutExposeAnnotation();
  5. Gson gson = builder.create();
  6. //1、对象转string
  7. Student stu = new Student();
  8. );
  9. stu.setStudentName("qqq");
  10. String stuStr = gson.toJson(stu);
  11. System.out.println(stuStr); //{"studentName":"qqq","studentId":333}
  12. //2、string转对象
  13. Student user2 = gson.fromJson(stuStr, Student.class);
  14. System.out.println(user2);
  15. String stuTemp = "{\"studentName\":\"qqq2\",\"studentId\":3335}";
  16. Student user4 = gson.fromJson(stuTemp, Student.class);
  17. System.out.println(user4);
  18. //3、对象List转string
  19. List<Student> testBeanList = new ArrayList<Student>();
  20. Student testBean = new Student();
  21. );
  22. testBean.setStudentName("552");
  23. testBeanList.add(testBean);
  24. //Gson gsonList = new Gson();
  25. Type type = new TypeToken<List<Student>>(){}.getType();  //指定集合对象属性
  26. String beanListToJson = gson.toJson(testBeanList, type);
  27. System.out.println(beanListToJson); //[{"studentName":"552","studentId":555}]
  28. //集合string转对象list
  29. List<Student> testBeanListFromJson = gson.fromJson(beanListToJson, type);
  30. System.out.println(testBeanListFromJson); //[555:552]
  31. //4、集合如果不指定类型 默认为String
  32. List<String> testList = new ArrayList<String>();
  33. testList.add("first");
  34. testList.add("second");
  35. String listToJson = gson.toJson(testList);
  36. System.out.println(listToJson); //["first","second"]
  37. //5、集合字符串转回来需要指定类型
  38. List<String> testList2 = (List<String>) gson.fromJson(listToJson,
  39. new TypeToken<List<String>>() {
  40. }.getType());
  41. System.out.println(testList2);
  42. //6、 将HashMap字符串转换为 JSON
  43. Map<String, String> testMap = new HashMap<String, String>();
  44. testMap.put("id", "id.first");
  45. testMap.put("name", "name.second");
  46. String mapToJson = gson.toJson(testMap);
  47. System.out.println(mapToJson); //{"id":"id.first","name":"name.second"}
  48. //7、stringMap转对象
  49. Map<String, String> userMap2 = (Map<String, String>) gson.fromJson(mapToJson,
  50. new TypeToken<Map<String, String>>() {
  51. }.getType());
  52. System.out.println(userMap2); //{id=id.first, name=name.second}
  53. //8、对象含有普通对象、集合、map情况
  54. Student user1 = new Student();
  55. );
  56. user1.setStudentName("张三");
  57. Student user3 = new Student();
  58. );
  59. user3.setStudentName("李四");
  60. Map<String, Student> userMap = new HashMap<String, Student>();
  61. userMap.put("user1", user1);
  62. userMap.put("user3", user3);
  63. List<Student> userList = new ArrayList<Student>();
  64. userList.add(user1);
  65. userList.add(user3);
  66. Teacher groupBean = new Teacher();
  67. groupBean.setStudent(user1);
  68. groupBean.setStus(userList);
  69. groupBean.setMap((HashMap)userMap);
  70. //groupBean.setUserList(userList);
  71. Gson gsonGroup = new Gson();
  72. String sGroupBean = gsonGroup.toJson(groupBean, new TypeToken<Teacher>() {
  73. }.getType());
  74. System.out.println(sGroupBean);
  75. /*{"stus":[{"studentName":"张三","studentId":1001},{"studentName":"李四","studentId":1002}],"student":{"studentName":"张三","studentId":1001},"map":{"user3":{"studentName":"李四","studentId":1002},"user1":{"studentName":"张三","studentId":1001}},"id":0,"age":0}*/
  1. //9、复杂对象string转对象
  2. Teacher groupBean2 = (Teacher) gson.fromJson(sGroupBean,
  3. new TypeToken<Teacher>() {
  4. }.getType());
  5. System.out.println(groupBean2);
  1. package com.andtools;
  2. import com.google.gson.annotations.Expose;
  3. public class Student {
  4. @Expose
  5. private String studentName;
  6. @Expose
  7. private int studentId;
  8. public Student(){}
  9. public Student(int studentId,String studentName){
  10. this.setStudentId(studentId);
  11. this.setStudentName(studentName);
  12. }
  13. public String toString(){
  14. return this.getStudentId() + ":" + this.getStudentName();
  15. }
  16. public String getStudentName() {
  17. return studentName;
  18. }
  19. public void setStudentName(String studentName) {
  20. this.studentName = studentName;
  21. }
  22. public int getStudentId() {
  23. return studentId;
  24. }
  25. public void setStudentId(int studentId) {
  26. this.studentId = studentId;
  27. }
  28. }
  1. package com.andtools;
  2. import java.util.HashMap;
  3. import java.util.List;
  4. import java.util.Map;
  5. import com.google.gson.annotations.Expose;
  6. public class Teacher {
  7. @Expose
  8. private int id;
  9. @Expose
  10. private String name;
  11. @Expose
  12. private int age;
  13. @Expose
  14. private Student student;
  15. @Expose
  16. private List stus;
  17. @Expose
  18. private HashMap map;
  19. public String toString(){
  20. return this.getId()+":"+this.getName()+":"+this.getAge() +":"+ this.getStudent().toString() + ":" + this.getStus() + ":" + this.getMap();
  21. }
  22. public int getId() {
  23. return id;
  24. }
  25. public void setId(int id) {
  26. this.id = id;
  27. }
  28. public String getName() {
  29. return name;
  30. }
  31. public void setName(String name) {
  32. this.name = name;
  33. }
  34. public int getAge() {
  35. return age;
  36. }
  37. public void setAge(int age) {
  38. this.age = age;
  39. }
  40. public Student getStudent() {
  41. return student;
  42. }
  43. public void setStudent(Student student) {
  44. this.student = student;
  45. }
  46. public List getStus() {
  47. return stus;
  48. }
  49. public void setStus(List stus) {
  50. this.stus = stus;
  51. }
  52. public HashMap getMap() {
  53. return map;
  54. }
  55. public void setMap(HashMap map) {
  56. this.map = map;
  57. }
  58. }

Android开发_Gson解析的更多相关文章

  1. Android开发pool解析xml

    xml在开发中的作用不可小觑,很多时候我们都要用到这种文件,所以学习它的解析方式很是必要. 我们都知道java中xml的解析有:dom,SAX,但是Android下我们使用pool解析,是更为方便,而 ...

  2. Android开发AlertDialog解析

    打开源码,首先映入眼帘的是三个构造方法,但这三个构造方法都是protected类型的, 可见,不允许我们直接实例化AlertDialog. 因此,我们再看别的有没有方法.可以实例化 再仔细一看,发现一 ...

  3. Android开发MVP模式解析

    http://www.cnblogs.com/bravestarrhu/archive/2012/05/02/2479461.html 在开发Android应用时,相信很多同学遇到和我一样的情况,虽然 ...

  4. Android开发:碎片Fragment完全解析fragment_main.xml/activity_main.xml

    Android开发:碎片Fragment完全解析   为了让界面可以在平板上更好地展示,Android在3.0版本引入了Fragment(碎片)功能,它非常类似于Activity,可以像 Activi ...

  5. [android开发IDE]adt-bundle-windows-x86的一个bug:无法解析.rs文件--------rs_core.rsh file not found

    google的android自带的apps写的是相当牛逼的,将其导入到eclipse中方便我们学习扩展.可惜关于导入的资料太少了,尤其是4.1之后的gallery和camera合二为一了.之前导4.0 ...

  6. Android开发周报:Flyme OS开源、经典开源项目解析

    Android开发周报:Flyme OS开源.经典开源项目解析 新闻 <魅族Flyme OS源码上线Github> :近日魅族正式发布了MX5,并且在发布会上,魅族还宣布Flyme OS开 ...

  7. 【Android开发精要笔记】Android组件模型解析

    Android组件模型解析 Android中的Mashup 将应用切分成不同类别的组件,通过统一的定位模型和接口标准将他们整合在一起,来共同完成某项任务.在Android的Mashup模式下,每个组件 ...

  8. 【Android开发日记】之入门篇(十三)——Android的控件解析

    Android的控件都派生自android.view.View类,在android.widget包中定义了大量的系统控件供开发者使用,开发者也可以从View类及其子类中,派生出自定义的控件. 一.An ...

  9. 《ArcGIS Runtime SDK for Android开发笔记》——(6)、基于Android Studio的ArcGIS Android工程结构解析

    1.前言 Android Studio 是第一个Google官方的 Android 开发环境.其他工具,例如 Eclipse,在 Android Studio 发布之前已经有了大规模的使用.为了帮助开 ...

随机推荐

  1. maven 依赖排除

    在项目中遇到一个问题,项目使用spring 3.x,引用了某些包,这些包又依赖了spring2.x,造成项目无法启动.这种情况就需要用到maven的依赖排除,配置如下: 使用以下代码排除依赖xxxx引 ...

  2. Android USB Host与HID通讯 (一)

    去年9月份来到现在的公司,接到新公司的第一个项目就是Android USB Host与HID通讯,当时也什么都不懂,就拿着google的api 开发指南 (http://developer.andro ...

  3. 【Linux安全】chattr命令锁定账户敏感文件

    有时候你发现用root权限都不能修改某个文件,大部分原因是曾经用chattr命令锁定该文件了.chattr命令的作用很大,其中一些功能是由Linux内核版本来支持的,不过现在生产绝大部分跑的linux ...

  4. Android 常用UI控件之TabHost(2)简单示例

    1,布局 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tool ...

  5. 【HDOJ】1254 推箱子

    来一发搜索.数据量比较小,这么玩儿都能ac.搞个优先队列.先扫描从起点可以到达箱子的上下左右中哪些位置,并针对这些位置进行bfs.所谓推,就是箱子和人同向移动一个单位.bfs的时候注意一些限制条件就好 ...

  6. Oracle系列之异常处理

    涉及到表的处理请参看原表结构与数据  Oracle建表插数据等等 使用select into语句读取tb_Employee的一行,使用异常处理处理no_data_found和two_many_rows ...

  7. bzoj2506

    不知道该给这题贴什么标签了,但是这是一道好题1.注意这道题的询问是满足区间减法的,我们可以把一个询问拆成两个询问离线搞搞,这个思想在后面会见到2.分类的思想,这道题的求相同余数看似很烦,实际上我们发现 ...

  8. Facebook的Pop动画库相关资料

    https://github.com/facebook/pop http://www.cocoachina.com/industry/20140507/8339.html http://www.ui. ...

  9. VS2010+WINDBG+VMWARE9.0和fatal error RC1106: invalid option: -ologo错误

    提供属性配置文件一份: http://pan.baidu.com/s/1iS1Ix <?xml version="1.0" encoding="utf-8" ...

  10. phpMyAdmin安装设置

    phpMyAdmin是一种MySQL的管理工具,它直接从web上去管理MySQL.   假设你的web(网页存放)根目录是 /var/www/ 假设你的主机web访问是这样的 http://192.1 ...