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. What's this?(js)

    What's this? 由于运行期绑定的特性,JavaScript 中的 this 含义非常多,它可以是全局对象.当前对象或者任意对象,这完全取决于函数的调用方式 随着函数使用场合的不同,this的 ...

  2. 『Asp.Net 组件』Asp.Net 服务器组件 内嵌CSS:将CSS封装到程序集中

    代码: <span style="font-family:Microsoft YaHei; font-size:12px">using System; using Sy ...

  3. ArrayList和LinkedList

    ArrayListArrayList其实是包装了一个数组 Object[],当实例化一个ArrayList时,一个数组也被实例化,当向ArrayList中添加对象是,数组的大小也相应的改变.这样就带来 ...

  4. bzoj3144

    最小割解决最优值最突出的特点就是要将对象划分到两个集合中这题很明显,裸的最小割先把点连成一根根柱子,就是p(x,y,k)-->p(x,y,k+1)流量是P(x,y,k+1)的不和谐值然后s与p( ...

  5. c#执行Dos命令

    一个执行Dos命令的窗口程序,与各位分享.   效果图:     具体实现在代码中有详细的注释,请看代码.   实现执行CMD命令的核心代码(Cmd.cs):   [csharp]   using S ...

  6. 【 D3.js 选择集与数据详解 — 1 】 使用datum()绑定数据

    选择集和数据的关系是 D3 最重要的基础,在[入门 - 第 7 章]时进行过些许讲解,对于要掌握好 D3 是远远不够的.故此开设一个新的分类,专门讨论选择集与数据的关系,包括数据绑定的使用和工作原理, ...

  7. 【转】ubuntu 12.04英文版设置成中文版

    原文网址:http://blog.csdn.net/hhbgk/article/details/7958776 适用于ubuntu 12.04英文版的系统,其它版本的设置应该是大同小异的. 进入ubu ...

  8. [Bhatia.Matrix Analysis.Solutions to Exercises and Problems]ExI.2.2

    Show that the following statements are equivalent: (1). $A$ is positive. (2). $A=B^*B$ for some $B$. ...

  9. ashx文件结合ajax使用(返回json数据)

    ashx文件返回json数据: public void ProcessRequest(HttpContext context) { context.Response.ContentType = &qu ...

  10. chart控件怎么使x轴标签全部显示出来

    在vs2012中使用chart控件事,x轴的标签过多,致使默认只能显示其中的一部分,如图 当然,我们可以通过设置,使得x轴标签全部显示. 首先,通过chart控件属性,找到   “ChartAreas ...