Map的存储结构式Key/Value形式,Key 和 Value可以是普通类型,也可以是自己写的JavaBean(上一篇博客),还可以是带有泛型的List(本文).本例中您要重点看如何将Json转回为带泛型的对象List,并且List中的泛型对象有多种实体.

实体类:

import java.util.Date;public class Student {private int id;private String name;private Date birthDay;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 Date getBirthDay() {return birthDay;}public void setBirthDay(Date birthDay) {this.birthDay = birthDay;}@Overridepublic String toString() {return "Student [birthDay=" + birthDay + ", id=" + id + ", name="+ name + "]";}}
public class Teacher {private int id;private String name;private String title;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 String getTitle() {return title;}public void setTitle(String title) {this.title = title;}@Overridepublic String toString() {return "Teacher [id=" + id + ", name=" + name + ", title=" + title+ "]";}}

测试类:

package com.tgb.lk.demo.gson.test4;import java.util.ArrayList;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;public class GsonTest4 {public static void main(String[] args) {Student student1 = new Student();student1.setId(1);student1.setName("李坤");student1.setBirthDay(new Date());Student student2 = new Student();student2.setId(2);student2.setName("曹贵生");student2.setBirthDay(new Date());Student student3 = new Student();student3.setId(3);student3.setName("柳波");student3.setBirthDay(new Date());List<Student> stulist = new ArrayList<Student>();stulist.add(student1);stulist.add(student2);stulist.add(student3);Teacher teacher1 = new Teacher();teacher1.setId(1);teacher1.setName("米老师");teacher1.setTitle("教授");Teacher teacher2 = new Teacher();teacher2.setId(2);teacher2.setName("丁老师");teacher2.setTitle("讲师");List<Teacher> teacherList = new ArrayList<Teacher>();teacherList.add(teacher1);teacherList.add(teacher2);Map<String, Object> map = new LinkedHashMap<String, Object>();map.put("students", stulist);map.put("teachers", teacherList);Gson gson = new Gson();String s = gson.toJson(map);System.out.println(s);System.out.println("----------------------------------");Map<String, Object> retMap = gson.fromJson(s,new TypeToken<Map<String, List<Object>>>() {}.getType());for (String key : retMap.keySet()) {System.out.println("key:" + key + " values:" + retMap.get(key));if (key.equals("students")) {List<Student> stuList = (List<Student>) retMap.get(key);System.out.println(stuList);} else if (key.equals("teachers")) {List<Teacher> tchrList = (List<Teacher>) retMap.get(key);System.out.println(tchrList);}}}
}

输出结果:

{"students":[{"id":1,"name":"李坤","birthDay":"Jun 22, 2012 9:48:19 PM"},{"id":2,"name":"曹贵生","birthDay":"Jun 22, 2012 9:48:19 PM"},{"id":3,"name":"柳波","birthDay":"Jun 22, 2012 9:48:19 PM"}],"teachers":[{"id":1,"name":"米老师","title":"教授"},{"id":2,"name":"丁老师","title":"讲师"}]}
----------------------------------
key:students values:[{id=1.0, name=李坤, birthDay=Jun 22, 2012 9:48:19 PM}, {id=2.0, name=曹贵生, birthDay=Jun 22, 2012 9:48:19 PM}, {id=3.0, name=柳波, birthDay=Jun 22, 2012 9:48:19 PM}]
[{id=1.0, name=李坤, birthDay=Jun 22, 2012 9:48:19 PM}, {id=2.0, name=曹贵生, birthDay=Jun 22, 2012 9:48:19 PM}, {id=3.0, name=柳波, birthDay=Jun 22, 2012 9:48:19 PM}]
key:teachers values:[{id=1.0, name=米老师, title=教授}, {id=2.0, name=丁老师, title=讲师}]
[{id=1.0, name=米老师, title=教授}, {id=2.0, name=丁老师, title=讲师}]

Json转换利器Gson之实例一-简单对象转化和带泛型的List转化 (http://blog.csdn.net/lk_blog/article/details/7685169)
Json转换利器Gson之实例二-Gson注解和GsonBuilder (http://blog.csdn.net/lk_blog/article/details/7685190)
Json转换利器Gson之实例三-Map处理(上) (http://blog.csdn.net/lk_blog/article/details/7685210)
Json转换利器Gson之实例四-Map处理(下) (http://blog.csdn.net/lk_blog/article/details/7685224)
Json转换利器Gson之实例五-实际开发中的特殊需求处理 (http://blog.csdn.net/lk_blog/article/details/7685237)
Json转换利器Gson之实例六-注册TypeAdapter及处理Enum类型 (http://blog.csdn.net/lk_blog/article/details/7685347)

实例代码下载: http://download.csdn.net/detail/lk_blog/4387822

Json转换利器Gson之实例四-Map处理(下)相关推荐

  1. Json转换利器Gson之实例一-简单对象转化和带泛型的List转化

    Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库.可以将一个 JSON 字符串转成一个 Java 对象,或者反过来. jar和源码下载地址: h ...

  2. Json转换利器Gson之实例二-Gson注解和GsonBuilder

    有时候我们不需要把实体的所有属性都导出,只想把一部分属性导出为Json. 有时候我们的实体类会随着版本的升级而修改. 有时候我们想对输出的json默认排好格式. ... ... 请看下面的例子吧: 实 ...

  3. Json转换利器Gson之实例五-实际开发中的特殊需求处理

    前面四篇博客基本上可以满足我们处理的绝大多数需求,但有时项目中对json有特殊的格式规定.比如下面的json串解析: [{"tableName":"students&qu ...

  4. Android之Json转换利器Gson之实例一-简单对象转化和带泛型的List转化

    看代码可以最快速学习 实体类 public class Student {private int id;private String name;private Date birthDay;public ...

  5. Json转换利器Gson-Gson注解和GsonBuilder

    1实体的一部分属性导出为Json 2实体类会根据版本的升级而修改 3对输出的json默认排好格式 import java.util.Date; import com.google.gson.annot ...

  6. Spring MVC JSON数据交互(附带实例)

    Spring MVC 在数据绑定的过程中需要对传递数据的格式和类型进行转换,它既可以转换 String 等类型的数据,也可以转换 JSON 等其他类型的数据.本节将针对 Spring MVC 中 JS ...

  7. Gson应用:利用map和list来拼装Json消息

    Gson应用:利用map和list来拼装Json消息 1 2 3 import java.util.ArrayList; 4 import java.util.HashMap; 5 import ja ...

  8. python json转换字典_Python json转字典字符方法实例解析

    josn基本操作 1.导入import json 2.字典转json:json.dumps(dict,ensure_ascii=False),加,ensure_ascii=False转换之后无中文乱码 ...

  9. List、Map 与json转换的工具类

    最近做公司项目安排做后台,因为写接口给别人用,就不能随随便便返回数据与接收数据了,为了统一性,要求统一用json来传输数据,为了方便后期的代码的维护以及代码的简洁,笔者整理了一下json与List.M ...

最新文章

  1. 如何安装python3.7.4_银河麒麟安装Python3.7.4以及升级自带OpenSSL
  2. 【Android 异步操作】手写 Handler ( 循环者 Looper | Looper 初始化 | Looper 遍历消息队列 MessageQueue )
  3. 不到 200 行代码,教你如何用 Keras 搭建生成对抗网络(GAN)
  4. MLPrimitive如何添加自定义的Primitive
  5. 内容流量管理的关键技术:多任务保量优化算法实践
  6. IPC 中 LPC、RPC 的区别和联系
  7. Java讲课笔记08:数组
  8. [SD2.0大会]在大型企业中领导敏捷--开发团队领导所必需的技能
  9. 爬虫开发python工具包介绍 (4)
  10. html如何转换为opml,使用并解析 OPML 格式的订阅列表来转移自己的 RSS 订阅(解析篇)...
  11. 电脑数据丢失没有备份怎么找回?
  12. JS HTML Web端使用MQTT通讯测试
  13. 由xubuntu桌面系统恢复到ubuntu桌面系统
  14. ACL / RBAC/ABAC
  15. bluekitchen-stm32f1/csr8311移植笔记(4)-database driver
  16. 关于电影的HTML网页设计-威海影视网站首页-电影主题HTM5网页设计作业成品
  17. 广东省新型数据中心发展白皮书
  18. 一篇文章让你搞定火山图,Volcano plot详解
  19. 世界道路协会PIARC五个在线技术手册
  20. redis设置开机自启详细

热门文章

  1. 霍尼韦尔进一步加大在中国烯烃领域投入,成立中国烯烃技术支持中心
  2. java毕业设计台球厅自助管理系统(附源码、数据库)
  3. “信名帖”亮相数字峰会,公安三所携手关爱通及零数科技共同呈现
  4. 初秋便当 | 味蕾的精致体验~肽享健康
  5. linux 进程 前台执行,转后台
  6. 股票量化编程入门有哪些编程语言?
  7. Linux 4种休眠模式
  8. java断点续传功能实现及思路SpringMVC版本
  9. 10亿元、EB级,你嗅到超融合春天的芬芳了吗?
  10. 粘滞键引起的提权实战