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. cs ip 通过jmp转移命令间接赋值。无法直接对其赋值。

    jmp 寄存器 命令 对IP间接赋值.

  2. Earth Mover's Distance (EMD)

    原文: http://d.hatena.ne.jp/aidiary/20120804/1344058475作者: sylvan5翻译: Myautsai和他的朋友们(Google Translate. ...

  3. *[topcoder]LittleElephantAndString

    http://community.topcoder.com/stat?c=problem_statement&pm=12854&rd=15709 这道题DIV1 250的,还有点意思. ...

  4. Android 获得屏幕的宽高度

    在View构造函数中获得屏幕的宽高 public class GameView extends View { public GameView(Context context) { Display d ...

  5. perl的输出缓冲

      今天写一个小脚本的时候,需要即时输出当前进度到命令行上,并即时将重要数据写入报告文件中.但是perl默认是有输出缓冲的,显示到命令行上必须以\n结尾才行,输出到文件中,回车了都不行,非得要等缓冲区 ...

  6. C# Json处理日期和Table

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Ru ...

  7. bzoj1056

    花了一上午大概复习了一下splay,treap 像这种裸的数据结构题在js应该会越来越少 不过练练手也好, 这就是平衡树+hash,如果这是单纯的BST应用,还是写treap吧,好调试 ;       ...

  8. BZOJ_1270_雷涛的小猫_(动态规划)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1270 有n棵树,高度为h.一只猫从任意一棵树的树顶开始,每次在同一棵树上下降1,或者跳到其他树 ...

  9. 浅谈 HTML5 的 DOM Storage 机制 (转)

    在开发 Web 应用时,开发者有时需要在本地存储数据.当前浏览器支持 cookie 存储,但其大小有 4KB 的限制.这对于一些 Ajax 应用来说是不够的.更多的存储空间需要浏览器本身或是插件的支持 ...

  10. iOS频繁打开相册崩溃: ALAssetsLibrary error - “Too many contexts. No space in contextList.”

    iOS频繁打开相册崩溃: ALAssetsLibrary error - “Too many contexts. No space in contextList.” http://stackoverf ...