gson支持解析的类型还是比较全面的,包括JavaBean,List<JavaBean>,List<String>,Map等,使用起来也是比较方便,下面根据代码示例给出总结:

package com.oyy.test;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
/**
* gson支持解析的类型还是比较全面的,包括JavaBean,List<JavaBean>,List<String>,Map等,使用起来也是比较方便.
* @author ouyangyu
* @date 2017-5-8 下午03:05:00
* @version V1.0
*/
public class T3 {
public static void main(String[] args) {
Gson gson = new Gson();

//将对象转换为json字符串
Person person = new Person();
person.setId(1);
person.setName("zhanglu");
person.setAddress("湖北大悟");
String jsonStr = gson.toJson(person);
System.out.println("将对象转换为json字符串的结果:"+jsonStr);

//将json字符串转换为Person对象
String json = "{\"id\":\"1\",\"name\":\"zhang\",\"address\":\"Hubei\"}";
Person person = gson.fromJson(json, Person.class);
System.out.println(person.getId()+" "+person.getAddress()+" "+person.getName());

//将集合转换为json字符串
Person person1 = new Person(1, "zhang", "Hubei");
Person person2 = new Person(2,"lu","DaWu");
List<Person> persons = new ArrayList<Person>();
persons.add(person1);
persons.add(person2);
String json = gson.toJson(persons);
//[{"id":1,"name":"zhang","address":"Hubei"},{"id":2,"name":"lu","address":"DaWu"}]
System.out.println(json);

//将json字符串组转换为多个对象
String json = "[{'id':'1','name':'zhang','address':'Hubei'},{'id':'2','name':'lu','address':'DaWu'}]";
List<Person> persons = gson.fromJson(json, new TypeToken<List<Person>>(){}.getType());
for(Person person : persons){
System.out.println(person.getId()+" "+person.getAddress()+" "+person.getName());
}

//注释:list string to string
List<String> list = new ArrayList<String>();
list.add("zhanglu");
list.add("hubei");
list.add("Dawu");
String json = gson.toJson(list);
//["zhanglu","hubei","Dawu"]
System.out.println(json);

//注释:json string to list<string>
String json = "['zhanglu','hubei','Dawu']";
List<String> list = gson.fromJson(json, new TypeToken<List<String>>(){}.getType());
for(String str : list){
System.out.println(str);
}

//Map<String,object> to json
Map<String, Person> map = new HashMap<String, Person>();
Person person = new Person(1, "zhanglu", "湖北大悟");
Person person2 = new Person(2, "Alone", "HuBeiDaWu");
map.put("person", person);
map.put("person2", person2);
String json = gson.toJson(map);
//{"person":{"id":1,"name":"zhanglu","address":"湖北大悟"},"person2":{"id":2,"name":"Alone","address":"HuBeiDaWu"}}
System.out.println(json);

//json to Map<Stirng,Object>
String json = "{\"person\":{\"id\":1,\"name\":\"zhanglu\",\"address\":\"湖北大悟\"},\"person2\":{\"id\":2,\"name\":\"Alone\",\"address\":\"HuBeiDaWu\"}}";
Map<String, Person> map = gson.fromJson(json, new TypeToken<Map<String,Person>>(){}.getType());
for(String key : map.keySet()){
System.out.println("key:"+key);
System.out.println((Person)map.get(key));
}
}
}

使用Google 的 gson方式解析json的更多相关文章

  1. TypeToken 是google提供的一个解析Json数据的类库中一个类

    Type listType = new TypeToken<LinkedList<User>>(){}.getType(); Type是java里的reflect包的Type ...

  2. 在线聊天项目1.4版 使用Gson方法解析Json字符串以便重构request和response的各种请求和响应 解决聊天不畅问题 Gson包下载地址

    在线聊天项目结构图: 多用户登陆效果图: 多用户聊天效果图: 数据库效果图: 重新构建了Server类,使用了Gson方法,通过解析Json字符串,增加Info类,简化判断过程. Server类代码如 ...

  3. [转]用Gson来解析Json数据

    转自太阳尚远的博客:http://blog.yeqianfeng.me/2016/03/02/use_gson_to_parse_json/ 在我们实际开发中像Json和XML这两种格式的数据是最常见 ...

  4. gson笔记 解析json数据

    gson中负责json数据解析的类是JsonReader. Json格式有两种结构,一种是对象(键值对的组合,无序),另外一种是数组(值的有序集合). 因此针对这两种格式,JsonReader提供了不 ...

  5. android使用Gson来解析json

    Gson是一种对象的解析json,非常好用,介绍一个站点http://json.parser.online.fr/能够帮我们看一个字符串是不是Json 对于Json文件 { "id" ...

  6. Gson的解析Json数据的两种方式

    转载:https://blog.csdn.net/huplion/article/details/78984977 在线JSON字符串转Java实体类(JavaBean.Entity): https: ...

  7. 使用Gson送解析Json格式

    Java bean: package com.jingle.a; public class Person { public String name; public int age; public Pe ...

  8. 封装 Gson 解析Json到对象是否失败

    在使用Google的 Gson 类库解析 Json 数据时,难免会出现解析失败的情况. 在这种情况下,使用 if(obj == null) 是不可行的,fromJson 方法会自动生成对象的实例,所以 ...

  9. 解析json格式数据

    实现目标 读取文件中的json格式数据,一行为一条json格式数据.进行解析封装成实体类. 通过google的Gson对象解析json格式数据 我现在解析的json格式数据为: {",&qu ...

随机推荐

  1. Marriage Match IV HDU - 3416

    题意 给你n个点,m条边,要求每条边只能走一次的S到T的最短路径的个数 题解 在我又WA又TLE还RE时,yyb大佬告诉我说要跑两遍SPFA,还说我写的一遍SPFA是错的,然而 啪啪打脸... 而且他 ...

  2. [BZOJ2879] [Noi2012] 美食节 (费用流 & 动态加边)

    Description CZ市为了欢迎全国各地的同学,特地举办了一场盛大的美食节.作为一个喜欢尝鲜的美食客,小M自然不愿意错过这场盛宴.他很快就尝遍了美食节所有的美食.然而,尝鲜的欲望是难以满足的.尽 ...

  3. tomcat环境配置 Linux 与 Windows

    Windows:例如tomcat安装在 E:\tomcat 需要在环境变量配置:CATALINA_HOME=E:\tomcat CATALINA_BASE= E:\tomcat Linux:例如tom ...

  4. Linux文件目录权限对比

    读取权限(r) 文件只有r权限: 具有读取\阅读文件内容权限1.只能使用查看类命令 cat.head.tail.less.more2.不能复制,也就是不能使用cp命令3.不能移动,不能使用mv命令移动 ...

  5. UML类图二

    在软件系统中,类并不是孤立存在的,类与类之间存在各种关系,对于不同类型的关系,UML提供了不同的表示方式.       1. 关联关系 关联(Association)关系是类与类之间最常用的一种关系, ...

  6. webpack使用教程

    webpack使用教程 接触webpack也有挺长一段时间了,公司的项目也是一直用着webpack在打包处理,但前几天在教新人的情况下,遇到了一个问题,那就是:尽管网上的webpack教程满天飞,但是 ...

  7. Microsoft AI - Custom Vision

    概述 前几天的 Windows Developer Day 正式发布了 Windows AI Platform,而作为 Windows AI Platform 的模型定义和训练,更多还是需要借助云端来 ...

  8. Java运行时内存划分

    这篇文章可以说是摘抄自周志明的<深入理解Java虚拟机>,但是加上了自己的理解,印象可以更深些. Java虚拟机在执行Java程序的时候会把他所管理的内存划分为若干个不同的数据区域,各个区 ...

  9. Java面向对象特性--多态

    Java是一种面向对象的编程语言,面向对象的三大特性就是继承,封装,多态.下面细细说一说多态. 多态的定义:一个事物的多种形态,指允许不同类的对象对同一消息做出响应.即同一消息可以根据发送对象的不同而 ...

  10. java swing 下拉框与文本框

    import java.awt.*; import javax.swing.*; import javax.swing.border.*; import java.awt.event.*; publi ...