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. Problem : 1196 ( Lowest Bit )

    第一次一次通过,逻辑太简单... #include<iostream> using namespace std; void main() { int n; while(cin>> ...

  2. 重命名Apache日志,新日志文件会放在哪里

    重命名access.log为access.log.bak,请问新的apache日志会放在哪? 本文转自51cto的李导的博客2017-09-30-08:11:41 原创作品,允许转载,转载时请务必以超 ...

  3. Keepalived+Nginx实现高可用负载均衡集群

    一 环境介绍 1.操作系统CentOS Linux release 7.2.1511 (Core) 2.服务keepalived+nginx双主高可用负载均衡集群及LAMP应用keepalived-1 ...

  4. Dynamics 365 Online-使用Azure Logic App 与 Dynamics 365 集成

    什么是Logic App? Azure Logic App 是微软发布的集成平台的产品,有助于生成,计划和自动完成工作流形式的流程,适合跨企业或组织集成,数据,系统和服务.与此同时,Logic App ...

  5. Django+xadmin打造在线教育平台(七)

    十.授课教师 10.1.讲师列表页 拷贝teacher-list.html和teacher-detail.html到templates目录下 先改teacher-list.html,同样继承base. ...

  6. jQuery学习笔记 .addClass()/.removeClass()简单学习

    使用jQuery或javaScript来动态改变页面中某个或部分元素的样式,为了实现这样的功能,我们往往都是使用jQuery或javaScript来控制HTML中DOM的类名(class)从而实现增加 ...

  7. 关于JQuery的绑定方法

    从jQuery1.7开始,jQuery引入了全新的事件绑定机制,on()和off()两个函数统一处理事件绑定.因为在此之前有bind(), live(), delegate()等方法来处理事件绑定,j ...

  8. Dom属性方法

    一.javascript的三大核心 1.ECMAScript js的语法标准 2.DOM Document object Model 文档对象模型,提供的方法可以让js操作html标签 3.BOM B ...

  9. 一周Maven框架学习随笔

    第一次写博客,可能写得不是很好,但是希望自己持之以恒,以后会更好.也希望通过写博客记录随笔,让自己本身有所收获. 下面是今天的maven总结: maven个人理解中是Maven项目对象模型(POM), ...

  10. TensorFlow-谷歌深度学习库 用tfrecord写入读取

    TensorFlow自带一种数据格式叫做tfrecords. 你可以把你的输入转成专属与TensorFlow的tfrecords格式并保存在本地. -关于输入碎碎念:输入比如图片,可以有各种格式呀首先 ...