Android开发_Gson解析
- //转换器
- GsonBuilder builder = new GsonBuilder();
- // 不转换没有 @Expose 注解的字段
- builder.excludeFieldsWithoutExposeAnnotation();
- Gson gson = builder.create();
- //1、对象转string
- Student stu = new Student();
- );
- stu.setStudentName("qqq");
- String stuStr = gson.toJson(stu);
- System.out.println(stuStr); //{"studentName":"qqq","studentId":333}
- //2、string转对象
- Student user2 = gson.fromJson(stuStr, Student.class);
- System.out.println(user2);
- String stuTemp = "{\"studentName\":\"qqq2\",\"studentId\":3335}";
- Student user4 = gson.fromJson(stuTemp, Student.class);
- System.out.println(user4);
- //3、对象List转string
- List<Student> testBeanList = new ArrayList<Student>();
- Student testBean = new Student();
- );
- testBean.setStudentName("552");
- testBeanList.add(testBean);
- //Gson gsonList = new Gson();
- Type type = new TypeToken<List<Student>>(){}.getType(); //指定集合对象属性
- String beanListToJson = gson.toJson(testBeanList, type);
- System.out.println(beanListToJson); //[{"studentName":"552","studentId":555}]
- //集合string转对象list
- List<Student> testBeanListFromJson = gson.fromJson(beanListToJson, type);
- System.out.println(testBeanListFromJson); //[555:552]
- //4、集合如果不指定类型 默认为String
- List<String> testList = new ArrayList<String>();
- testList.add("first");
- testList.add("second");
- String listToJson = gson.toJson(testList);
- System.out.println(listToJson); //["first","second"]
- //5、集合字符串转回来需要指定类型
- List<String> testList2 = (List<String>) gson.fromJson(listToJson,
- new TypeToken<List<String>>() {
- }.getType());
- System.out.println(testList2);
- //6、 将HashMap字符串转换为 JSON
- Map<String, String> testMap = new HashMap<String, String>();
- testMap.put("id", "id.first");
- testMap.put("name", "name.second");
- String mapToJson = gson.toJson(testMap);
- System.out.println(mapToJson); //{"id":"id.first","name":"name.second"}
- //7、stringMap转对象
- Map<String, String> userMap2 = (Map<String, String>) gson.fromJson(mapToJson,
- new TypeToken<Map<String, String>>() {
- }.getType());
- System.out.println(userMap2); //{id=id.first, name=name.second}
- //8、对象含有普通对象、集合、map情况
- Student user1 = new Student();
- );
- user1.setStudentName("张三");
- Student user3 = new Student();
- );
- user3.setStudentName("李四");
- Map<String, Student> userMap = new HashMap<String, Student>();
- userMap.put("user1", user1);
- userMap.put("user3", user3);
- List<Student> userList = new ArrayList<Student>();
- userList.add(user1);
- userList.add(user3);
- Teacher groupBean = new Teacher();
- groupBean.setStudent(user1);
- groupBean.setStus(userList);
- groupBean.setMap((HashMap)userMap);
- //groupBean.setUserList(userList);
- Gson gsonGroup = new Gson();
- String sGroupBean = gsonGroup.toJson(groupBean, new TypeToken<Teacher>() {
- }.getType());
- System.out.println(sGroupBean);
- /*{"stus":[{"studentName":"张三","studentId":1001},{"studentName":"李四","studentId":1002}],"student":{"studentName":"张三","studentId":1001},"map":{"user3":{"studentName":"李四","studentId":1002},"user1":{"studentName":"张三","studentId":1001}},"id":0,"age":0}*/
- //9、复杂对象string转对象
- Teacher groupBean2 = (Teacher) gson.fromJson(sGroupBean,
- new TypeToken<Teacher>() {
- }.getType());
- System.out.println(groupBean2);
- package com.andtools;
- import com.google.gson.annotations.Expose;
- public class Student {
- @Expose
- private String studentName;
- @Expose
- private int studentId;
- public Student(){}
- public Student(int studentId,String studentName){
- this.setStudentId(studentId);
- this.setStudentName(studentName);
- }
- public String toString(){
- return this.getStudentId() + ":" + this.getStudentName();
- }
- public String getStudentName() {
- return studentName;
- }
- public void setStudentName(String studentName) {
- this.studentName = studentName;
- }
- public int getStudentId() {
- return studentId;
- }
- public void setStudentId(int studentId) {
- this.studentId = studentId;
- }
- }
- package com.andtools;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import com.google.gson.annotations.Expose;
- public class Teacher {
- @Expose
- private int id;
- @Expose
- private String name;
- @Expose
- private int age;
- @Expose
- private Student student;
- @Expose
- private List stus;
- @Expose
- private HashMap map;
- public String toString(){
- return this.getId()+":"+this.getName()+":"+this.getAge() +":"+ this.getStudent().toString() + ":" + this.getStus() + ":" + this.getMap();
- }
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- 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 Student getStudent() {
- return student;
- }
- public void setStudent(Student student) {
- this.student = student;
- }
- public List getStus() {
- return stus;
- }
- public void setStus(List stus) {
- this.stus = stus;
- }
- public HashMap getMap() {
- return map;
- }
- public void setMap(HashMap map) {
- this.map = map;
- }
- }
Android开发_Gson解析的更多相关文章
- Android开发pool解析xml
xml在开发中的作用不可小觑,很多时候我们都要用到这种文件,所以学习它的解析方式很是必要. 我们都知道java中xml的解析有:dom,SAX,但是Android下我们使用pool解析,是更为方便,而 ...
- Android开发AlertDialog解析
打开源码,首先映入眼帘的是三个构造方法,但这三个构造方法都是protected类型的, 可见,不允许我们直接实例化AlertDialog. 因此,我们再看别的有没有方法.可以实例化 再仔细一看,发现一 ...
- Android开发MVP模式解析
http://www.cnblogs.com/bravestarrhu/archive/2012/05/02/2479461.html 在开发Android应用时,相信很多同学遇到和我一样的情况,虽然 ...
- Android开发:碎片Fragment完全解析fragment_main.xml/activity_main.xml
Android开发:碎片Fragment完全解析 为了让界面可以在平板上更好地展示,Android在3.0版本引入了Fragment(碎片)功能,它非常类似于Activity,可以像 Activi ...
- [android开发IDE]adt-bundle-windows-x86的一个bug:无法解析.rs文件--------rs_core.rsh file not found
google的android自带的apps写的是相当牛逼的,将其导入到eclipse中方便我们学习扩展.可惜关于导入的资料太少了,尤其是4.1之后的gallery和camera合二为一了.之前导4.0 ...
- Android开发周报:Flyme OS开源、经典开源项目解析
Android开发周报:Flyme OS开源.经典开源项目解析 新闻 <魅族Flyme OS源码上线Github> :近日魅族正式发布了MX5,并且在发布会上,魅族还宣布Flyme OS开 ...
- 【Android开发精要笔记】Android组件模型解析
Android组件模型解析 Android中的Mashup 将应用切分成不同类别的组件,通过统一的定位模型和接口标准将他们整合在一起,来共同完成某项任务.在Android的Mashup模式下,每个组件 ...
- 【Android开发日记】之入门篇(十三)——Android的控件解析
Android的控件都派生自android.view.View类,在android.widget包中定义了大量的系统控件供开发者使用,开发者也可以从View类及其子类中,派生出自定义的控件. 一.An ...
- 《ArcGIS Runtime SDK for Android开发笔记》——(6)、基于Android Studio的ArcGIS Android工程结构解析
1.前言 Android Studio 是第一个Google官方的 Android 开发环境.其他工具,例如 Eclipse,在 Android Studio 发布之前已经有了大规模的使用.为了帮助开 ...
随机推荐
- cs ip 通过jmp转移命令间接赋值。无法直接对其赋值。
jmp 寄存器 命令 对IP间接赋值.
- Earth Mover's Distance (EMD)
原文: http://d.hatena.ne.jp/aidiary/20120804/1344058475作者: sylvan5翻译: Myautsai和他的朋友们(Google Translate. ...
- *[topcoder]LittleElephantAndString
http://community.topcoder.com/stat?c=problem_statement&pm=12854&rd=15709 这道题DIV1 250的,还有点意思. ...
- Android 获得屏幕的宽高度
在View构造函数中获得屏幕的宽高 public class GameView extends View { public GameView(Context context) { Display d ...
- perl的输出缓冲
今天写一个小脚本的时候,需要即时输出当前进度到命令行上,并即时将重要数据写入报告文件中.但是perl默认是有输出缓冲的,显示到命令行上必须以\n结尾才行,输出到文件中,回车了都不行,非得要等缓冲区 ...
- C# Json处理日期和Table
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Ru ...
- bzoj1056
花了一上午大概复习了一下splay,treap 像这种裸的数据结构题在js应该会越来越少 不过练练手也好, 这就是平衡树+hash,如果这是单纯的BST应用,还是写treap吧,好调试 ; ...
- BZOJ_1270_雷涛的小猫_(动态规划)
描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1270 有n棵树,高度为h.一只猫从任意一棵树的树顶开始,每次在同一棵树上下降1,或者跳到其他树 ...
- 浅谈 HTML5 的 DOM Storage 机制 (转)
在开发 Web 应用时,开发者有时需要在本地存储数据.当前浏览器支持 cookie 存储,但其大小有 4KB 的限制.这对于一些 Ajax 应用来说是不够的.更多的存储空间需要浏览器本身或是插件的支持 ...
- iOS频繁打开相册崩溃: ALAssetsLibrary error - “Too many contexts. No space in contextList.”
iOS频繁打开相册崩溃: ALAssetsLibrary error - “Too many contexts. No space in contextList.” http://stackoverf ...