使用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 ...
随机推荐
- 【NOIP2012】【CJOJ1093】【洛谷1083】借教室
我写的是不完美算法!!! 题面 Description 在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要 向学校申请借教室.教室的大小功能不同,借教室人的身份不同,借教室的 ...
- 图文详解AO打印(标准模式)
一.概述 AO打印是英文Active-Online Print的简称,也称主动在线打印.打印前支持AO通讯协议的AO打印机(购买地址>>)首先通过普通网络与C-Lodop服务保持在线链 ...
- iptables 学习
本博客是学习慕课网课程 用iptables搭建一套强大的安全防护盾 整理而成 iptables相当于在ip层挂载一个hook point对用户进行控制 组成: 四张表+ 五条链(hook point) ...
- Lintcode360 Sliding Window Median solution 题解
[题目描述] Given an array of n integer, and a moving window(size k), move the window at each iteration f ...
- c++中回调函数和函数指针的使用
#include "stdafx.h" #include <iostream> //#include <string> using namespace st ...
- Win10_x86_x64PE维护光盘——我用过最好用的PE
先感谢hongxj和fish2006两位大大提供的PE. 先放出所有工具的下载地址: hongxj的PE:https://yunpan.cn/crAw6HS6ar9ck 访问密码 4a4e fish ...
- The Problems of Mysql Installation
1.mysql启动报错 解决:查看相关路径的配置文件的basedir.datadir等路径是否正确. 解决:查看报错路径下是否有文件,若没有可找相应文件做软链接,或者/etc/my.cnf部分路径配置 ...
- 剑指Offer-孩子们的游戏(圆圈中最后剩下的数)
package Other; import java.util.LinkedList; /** * 孩子们的游戏(圆圈中最后剩下的数) * 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友, ...
- 笔记:I/O流-内存映射文件
内存映射文件时利用虚拟内存实现来将一个文件或者文件的一部分映射到内存中,然后整个文件就可以当作数组一样的访问,这个比传统的文件操作要快得多,Java 使用内存映射文件首先需要从文件中获取一个chann ...
- 笔记:Hibernate 二级缓存
Hibernate 包括二个级别的缓存,默认的总是启用Session级别的一级缓存,可选的 SessionFactory 级别的二级缓存,Session级别的一级缓存,但应用保存持久化实体.修改持久化 ...