使用Google 的 gson方式解析json
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的更多相关文章
- TypeToken 是google提供的一个解析Json数据的类库中一个类
Type listType = new TypeToken<LinkedList<User>>(){}.getType(); Type是java里的reflect包的Type ...
- 在线聊天项目1.4版 使用Gson方法解析Json字符串以便重构request和response的各种请求和响应 解决聊天不畅问题 Gson包下载地址
在线聊天项目结构图: 多用户登陆效果图: 多用户聊天效果图: 数据库效果图: 重新构建了Server类,使用了Gson方法,通过解析Json字符串,增加Info类,简化判断过程. Server类代码如 ...
- [转]用Gson来解析Json数据
转自太阳尚远的博客:http://blog.yeqianfeng.me/2016/03/02/use_gson_to_parse_json/ 在我们实际开发中像Json和XML这两种格式的数据是最常见 ...
- gson笔记 解析json数据
gson中负责json数据解析的类是JsonReader. Json格式有两种结构,一种是对象(键值对的组合,无序),另外一种是数组(值的有序集合). 因此针对这两种格式,JsonReader提供了不 ...
- android使用Gson来解析json
Gson是一种对象的解析json,非常好用,介绍一个站点http://json.parser.online.fr/能够帮我们看一个字符串是不是Json 对于Json文件 { "id" ...
- Gson的解析Json数据的两种方式
转载:https://blog.csdn.net/huplion/article/details/78984977 在线JSON字符串转Java实体类(JavaBean.Entity): https: ...
- 使用Gson送解析Json格式
Java bean: package com.jingle.a; public class Person { public String name; public int age; public Pe ...
- 封装 Gson 解析Json到对象是否失败
在使用Google的 Gson 类库解析 Json 数据时,难免会出现解析失败的情况. 在这种情况下,使用 if(obj == null) 是不可行的,fromJson 方法会自动生成对象的实例,所以 ...
- 解析json格式数据
实现目标 读取文件中的json格式数据,一行为一条json格式数据.进行解析封装成实体类. 通过google的Gson对象解析json格式数据 我现在解析的json格式数据为: {",&qu ...
随机推荐
- 金三银四,2018最新iOS面试题,由它可以搞定面试官?
序言 这些资料,你一定会用到!我相信很多人都在说,iOS行业不好了,iOS现在行情越来越难了,失业的人比找工作的人还要多.失业即相当于转行,跳槽即相当于降低自己的身价.那么做iOS开发的你,你是否在时 ...
- Android视频直播:流媒体服务器搭建
一.前言 实时视频直播是这两年非常火的技术形态,已经渗透到教育.在线互娱等各种业务场景中.但要搭建一套实时视频直播系统,并非易事,下面针对直播系统的的搭建做一下说明: 1.1 通常的直播系统的技术模型 ...
- c# MongoDB Driver 官方教程翻译
先贴官方文档地址:http://mongodb.github.io/mongo-csharp-driver/2.5/getting_started/quick_tour/ 安装部分很简单,nuget搜 ...
- Java集合框架(一)
原文 http://www.jianshu.com/p/e31fb2600e4f 集合类存放于java.util包中,集合类存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就 ...
- 让wordpress标签云显示文章数的正确方法
先看一下效果 在百度经验找到一个教程,可惜,根据实践发现方法是错误的, 百度经验上的代码: 1 2 3 4 5 6 7 8 9 10 11 12 //标签tag所包含的文章数量 function Ta ...
- 破解ServiceStack.Redis每小时6000次限制
在.net里我们操作Redis常用的组件就是ServiceStack.Redis了,但是这个从4.0版本后开始商业化了,我们在使用的时候, 会有很多限制: 1.类型限制, 类型限制是20,这个组件自带 ...
- Mac环境下使用VSCode搭建Go开发环境
换新工作啦!!!开心一下.到了新公司一看,乖乖,全MAC办公,让我这只用过windows的土包子怎么活,而且公司的人都好高冷,于是自己摸索着搭建go语言开发环境了. go语言的ide挺多的,JetBr ...
- videojs双击全屏幕观看,videojs动态加载视频
前段时间闲来无事弄了弄video.js,感觉蛮好玩,能应用到各个应用端,自己在最后玩耍的时候,需要注意的只剩下两方面了,1,动态加载播放视频内容2,双击全屏观看, var urlRoad = &quo ...
- windows下安装mysql以及启动
配置环境变量,在path中添加 ;E:\wamp\Apache24\mysql(这是你的mysql安装路径),然后在修改一下配置文件my-default.ini(mysql安装文件夹目录下) 修改其中 ...
- [译]Android view 测量布局和绘制的流程
原文链接 创造优秀的用户体验是我们开发者的主要目标之一.为此, 我们首先要了解系统是如何工作的, 这样我们才可以更好的与系统配合, 从它的优点中获益, 规避它的缺陷. 之前关于Android渲染过程的 ...