使用Google的Gson实现对象和json字符串之间的转换

需要gson.jar

1.JsonUtil.java

  1. package com.snail.json;
  2. import java.lang.reflect.Type;
  3. import com.google.gson.Gson;
  4. /**
  5. * Java对象和JSON字符串相互转化工具类
  6. * @author penghuaiyi
  7. * @date 2013-08-10
  8. */
  9. public final class JsonUtil {
  10. private JsonUtil(){}
  11. /**
  12. * 对象转换成json字符串
  13. * @param obj
  14. * @return
  15. */
  16. public static String toJson(Object obj) {
  17. Gson gson = new Gson();
  18. return gson.toJson(obj);
  19. }
  20. /**
  21. * json字符串转成对象
  22. * @param str
  23. * @param type
  24. * @return
  25. */
  26. public static <T> T fromJson(String str, Type type) {
  27. Gson gson = new Gson();
  28. return gson.fromJson(str, type);
  29. }
  30. /**
  31. * json字符串转成对象
  32. * @param str
  33. * @param type
  34. * @return
  35. */
  36. public static <T> T fromJson(String str, Class<T> type) {
  37. Gson gson = new Gson();
  38. return gson.fromJson(str, type);
  39. }
  40. }

2. Person.java

  1. package com.snail.json;
  2. public class Person {
  3. private int id;
  4. private String name;
  5. public int getId() {
  6. return id;
  7. }
  8. public void setId(int id) {
  9. this.id = id;
  10. }
  11. public String getName() {
  12. return name;
  13. }
  14. public void setName(String name) {
  15. this.name = name;
  16. }
  17. }

3. Test.java

  1. package com.snail.json;
  2. import java.util.ArrayList;
  3. import java.util.HashMap;
  4. import java.util.List;
  5. import java.util.Map;
  6. import java.util.Map.Entry;
  7. import com.google.gson.reflect.TypeToken;
  8. public class Test {
  9. /**
  10. * 一般对象的转换
  11. */
  12. public static void objectToJson(){
  13. Person person = new Person();
  14. person.setId(1);
  15. person.setName("one");
  16. //javabean转换成json字符串
  17. String jsonStr = JsonUtil.toJson(person);
  18. System.out.println(jsonStr);
  19. //json字符串转换成javabean
  20. Person newPerson = JsonUtil.fromJson(jsonStr, Person.class);
  21. System.out.println(person == newPerson);
  22. System.out.println(newPerson.getId()+","+newPerson.getName());
  23. }
  24. /**
  25. * 复合结构数据转换(List)
  26. */
  27. public static void listToJson(){
  28. Person person1 = new Person();
  29. person1.setId(1);
  30. person1.setName("one");
  31. Person person2 = new Person();
  32. person2.setId(2);
  33. person2.setName("two");
  34. List<Person> list = new ArrayList<Person>();
  35. list.add(person1);
  36. list.add(person2);
  37. //javabean转换成json字符串
  38. String jsonStr = JsonUtil.toJson(list);
  39. System.out.println(jsonStr);
  40. //json字符串转换成javabean对象
  41. List<Person> rtn = JsonUtil.fromJson(jsonStr, new TypeToken<List<Person>>(){}.getType());
  42. for(Person person : rtn){
  43. System.out.println(person.getId()+","+person.getName());
  44. }
  45. }
  46. /**
  47. * 复合结构数据转换(Map)
  48. */
  49. public static void mapToJson(){
  50. Person person1 = new Person();
  51. person1.setId(1);
  52. person1.setName("one");
  53. Person person2 = new Person();
  54. person2.setId(2);
  55. person2.setName("two");
  56. Map<Integer,Person> map = new HashMap<Integer,Person>();
  57. map.put(person1.getId(), person1);
  58. map.put(person2.getId(), person2);
  59. //javabean转换成json字符串
  60. String jsonStr = JsonUtil.toJson(map);
  61. System.out.println(jsonStr);
  62. //json字符串转换成Map对象
  63. Map<Integer,Person> rtn = JsonUtil.fromJson(jsonStr, new TypeToken<Map<Integer,Person>>(){}.getType());
  64. for(Entry<Integer, Person> entry : rtn.entrySet()){
  65. Integer key = entry.getKey();
  66. Person newPerson = entry.getValue();
  67. System.out.println("key:"+key+","+newPerson.getId()+","+newPerson.getName());
  68. }
  69. }
  70. public static void main(String[] args) {
  71. objectToJson();
  72. System.out.println("****************************");
  73. listToJson();
  74. System.out.println("****************************");
  75. mapToJson();
  76. }
  77. }

使用Google的Gson实现对象和json字符串之间的转换的更多相关文章

  1. <摘录>Gson对Java嵌套对象和JSON字符串之间的转换

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,具有良好的跨平台特性.近几年来已经和XML一样成为C/S架构中广泛采用的数据格式.有关JSON的更多知识, ...

  2. json对象和json字符串之间的转换-JavaScript实现

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  3. Json对象和Json字符串之间的转换

    json字符串转json对象,调用parse方法: var b='{"name":"2323","sex":"afasdf&quo ...

  4. JSON对象与JSON字符串之间的转换

    JSON引用包:import net.sf.json 1.JSON字符串转JSON对象(例子中的AgencyExpand是java对象) JSONObject  json = JSONObject.f ...

  5. node.js JS对象和JSON字符串之间的转换

    JSON.stringify(obj)将JS对象转为字符串. var json = { aa: ['sdddssd'],   bb: [ '892394829342394792399', '23894 ...

  6. 前端页面使用 Json对象与Json字符串之间的互相转换

    前言 在前端页面很多时候都会用到Json这种格式的数据,最近没有前端,后端的我也要什么都要搞,对于Json对象与Json字符串之间的转换终于摸清楚了几种方式,归纳如下! 一:Json对象转换为json ...

  7. json对象和json字符串之间的转化

    json对象和json字符串之间的转化 json字符串----->json对象 使用JSON.parse()函数 var jsonStr = '{"name":"z ...

  8. java对象与Json字符串之间的转化(fastjson)

    1. 首先引入jar包 在pom.xml文件里加入下面依赖: <dependency> <groupId>com.alibaba</groupId> <art ...

  9. JS中实现JSON对象和JSON字符串之间的相互转换

    对于主流的浏览器(比如:firefox,chrome,opera,safari,ie8+),浏览器自己提供了JSON对象,其中的parse和stringify方法实现了JSON对象和JSON字符串之间 ...

随机推荐

  1. oc数组遍历

    #import <Foundation/Foundation.h> //数组遍历(枚举)对集合中的元素依此不重复的进行遍历 int main(int argc, const char * ...

  2. .net core 在IIS上发布502问题

    本来迁移一个项目到.net core就是一件体力活,要找各种替代包,还有一些函数/属性的不支持 总之很头疼... 不要问我为什么用了.net core还要Host在IIS上,国内用.net的公司普遍都 ...

  3. C、C++混合调用——博客收藏

    C与C++接口相互调用:https://www.cnblogs.com/feige1314/p/7890982.html C.C++混合调用:https://www.cnblogs.com/xuany ...

  4. JAVA运行环境配置

    win10下,右击我的电脑-->高级系统设置-->高级-->环境变量-->系统变量 1新建 变量名   JAVA_HOME 变量值   C:\Program Files\Jav ...

  5. Android 适配器 自定义

    前言:最近看了几个开源项目,发现适配器这东西用的很多,一开始觉得这东西高大上,其实呢,感觉就是一个中转站,或者说是一个接口工具,将数据填充到一个视图中,几乎任何项目都会涉及到.所以今天也简单看了一下, ...

  6. sql中一个服务器建立另一个服务器的连接

    EXEC sp_addlinkedserver 'TonyLink','','SQLOLEDB','111.111.1.111(服务器名)' EXEC sp_addlinkedsrvlogin 'To ...

  7. Androd安全——反编译技术完全解析

    )第二步成功后我们会发现在当前目录下多了一个<APKName>文件夹,这个文件夹中存放的就是反编译的结果了.我们可以打开AndroidManifest.xml.res/layout即可查看 ...

  8. Android学习笔记之-----讯飞语音识别实例化RecognizerDialog参数出现错误的解决方法

    本人也是个小菜鸟,在做语音识别时也遇到了这个问题,空指针一直报错,app程序停止运行. 在网上搜了半天在这个帖子里找到了解决方法:http://bbs.xfyun.cn/forum.php?mo .. ...

  9. HttpRunnerManager 接口自动化测试平台 搭建实践

    一.需要准备的知识点 1. linux: 安装 python3.nginx 安装和配置.mysql 安装和配置 2. python: django 配置.uwsgi 配置 二.我搭建的环境 1. Ce ...

  10. IOS开发学习笔记014-ARC机制

    ARC 1.ARC机制 2.ARC 判断准则 3.注意事项 4.ARC和非ARC混合使用 ARC机制 ARC 是编译器特性,而不是 iOS 运行时特性,它也不是类似于其它语言中的垃圾收集器.因此 AR ...