gson使用详解
昨天读一篇文章,看到gson这个词,一开始还以为作者写错了,问了度娘之后才发现是我才疏学浅,于是大概了解了一下gson用法,总体来说还是很简单的。
JavaBean转json
//javaBean-->json
@Test
public void test1(){
Gson gson = new Gson();
Person p = new Person("张三", "123", 500, new Book("三国演义", "罗贯中"));
String json = gson.toJson(p);
System.out.println(json);
}
json转javabean
//json-->javaBean
@Test
public void test2(){
String json = "{\"username\":\"张三\",\"password\":\"123\",\"money\":500,\"book\":{\"id\":0,\"name\":\"三国演义\",\"price\":0,\"author\":\"罗贯中\"}}";
Gson gson = new Gson();
Person p = gson.fromJson(json, Person.class);
System.out.println(p.getUsername()+"--"+p.getBook().getName());
}
List集合转json
//list-->json
@Test
public void test3() {
List<Person> list = new ArrayList<Person>();
Person p = new Person("张三", "123", 500, new Book("三国演义", "罗贯中"));
list.add(p);
p = new Person("李四", "123", 500, new Book("三国演义", "罗贯中"));
list.add(p);
Gson gson = new Gson();
String gsonStr = gson.toJson(list);
System.out.println(gsonStr);
}
Map集合转json
//map-->json
@Test
public void test4() {
Map<String, Person> map = new HashMap<String, Person>();
Person p = new Person("张三", "123", 500, new Book("三国演义", "罗贯中"));
map.put("p1", p);
p = new Person("李四", "123", 500, new Book("三国演义", "罗贯中"));
map.put("p2", p);
Gson gson = new Gson();
String gsonStr = gson.toJson(map);
System.out.println(gsonStr);
}
json字符串转List集合
//json-->list
@Test
public void test5() {
String str = "[{\"username\":\"张三\",\"password\":\"123\",\"money\":500,\"book\":{\"id\":0,\"name\":\"三国演义\",\"price\":0,\"author\":\"罗贯中\"}},{\"username\":\"李四\",\"password\":\"123\",\"money\":500,\"book\":{\"id\":0,\"name\":\"三国演义\",\"price\":0,\"author\":\"罗贯中\"}}]";
Gson gson = new Gson();
List<Person> ps = gson.fromJson(str,new TypeToken<List<Person>>() {
}.getType());
for (Person person : ps) {
System.out.println(person.getUsername()+"---"+person.getBook().getName());
}
}
json字符串转Map集合
//json-->map
@Test
public void test6(){
String str = "{\"p1\":{\"username\":\"张三\",\"password\":\"123\",\"money\":500,\"book\":{\"id\":0,\"name\":\"三国演义\",\"price\":0,\"author\":\"罗贯中\"}},\"p2\":{\"username\":\"李四\",\"password\":\"123\",\"money\":500,\"book\":{\"id\":0,\"name\":\"红楼梦\",\"price\":0,\"author\":\"曹雪芹\"}}}";
Gson gson = new Gson();
Map<String, Person> map = gson.fromJson(str, new TypeToken<Map<String, Person>>(){}.getType());
Set<String> keys = map.keySet();
for(String key:keys){
System.out.println(map.get(key).getUsername()+"--"+map.get(key).getBook().getName());
}
}
相关的两个javabean
Person.java
public class Person {
private String username;
private String password;
private int money;
private Book book;
public Person() {
}
public Person(Book book) {
this.book = book;
}
public Book getBook() {
return book;
}
public void setBook(Book book) {
this.book = book;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getMoney() {
return money;
}
public void setMoney(int money) {
this.money = money;
}
public Person(String username, String password, int money, Book book) {
super();
this.username = username;
this.password = password;
this.money = money;
this.book = book;
}
}
Book.java
public class Book {
private int id;
private String name;
private int price;
private String author;
private Detail detail;
private Attribute attribute;
public Attribute getAttribute() {
return attribute;
}
public void setAttribute(Attribute attribute) {
this.attribute = attribute;
}
public Detail getDetail() {
return detail;
}
public void setDetail(Detail detail) {
this.detail = detail;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public Book(String name, String author) {
this.name = name;
this.author = author;
}
public Book() {
}
}
注意事项:
把json字符串转为集合时,new TypeToken<>(){}.getType()在eclipse中貌似不能够自动提示,如果你的电脑也是这样的话,建议这里的代码自己手动敲一下,eclipse只是不会自动提示,自己敲出来的是不会报错的,嗯,我就遇到这一个小小的问题,总体来说这个东东还是很好用的。
gson使用详解的更多相关文章
- Android 网络框架之Retrofit2使用详解及从源码中解析原理
就目前来说Retrofit2使用的已相当的广泛,那么我们先来了解下两个问题: 1 . 什么是Retrofit? Retrofit是针对于Android/Java的.基于okHttp的.一种轻量级且安全 ...
- Android proguard 详解
本文转载于:http://blog.csdn.net/banketree/article/details/41928175 简介 Java代码是非常容易反编译的.为了很好的保护Java源代码,我们往往 ...
- 通讯协议序列化解读(一) Protobuf详解教程
前言:说到JSON可能大家很熟悉,是目前应用最广泛的一种序列化格式,它使用起来简单方便,而且拥有超高的可读性.但是在越来越多的应用场景里,JSON冗长的缺点导致它并不是一种最优的选择. 一.常用序列化 ...
- RabbitMQ安装使用详解
1.下载相应的版本安装:http://www.rabbitmq.com/download.htmleg:http://www.rabbitmq.com/releases/rabbitmq-server ...
- Android Studio 插件开发详解三:翻译插件实战
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78113868 本文出自[赵彦军的博客] 一:概述 如果不了解插件开发基础的同学可以 ...
- Android Studio 插件开发详解二:工具类
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78112856 本文出自[赵彦军的博客] 在插件开发过程中,我们按照开发一个正式的项 ...
- Android Studio 插件开发详解一:入门练手
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78112003 本文出自[赵彦军的博客] 一:概述 相信大家在使用Android S ...
- 【转】Android OkHttp3简介和使用详解
一 OKHttp简介 OKHttp是一个处理网络请求的开源项目,Android 当前最火热网络框架,由移动支付Square公司贡献,用于替代HttpUrlConnection和Apache HttpC ...
- Spring Boot 之使用 Json 详解
Spring Boot 之使用 Json 详解 简介 Spring Boot 支持的 Json 库 Spring Web 中的序列化.反序列化 指定类的 Json 序列化.反序列化 @JsonTest ...
随机推荐
- asp.net 登陆后在ashx处理程序中获取不到Session
登录后存储Session,另一个页面Ajax请求 ashx页面,发现无法获取到Session,Session is NULL 使用“IReadOnlySessionState”这个接口就可以
- 【POJ 3487】 The Stable Marriage Problem (稳定婚姻问题)
The Stable Marriage Problem Description The stable marriage problem consists of matching members o ...
- USB 2.0 A型、B型、Mini和Micro接口定义及封装
USB全称Universal Serial Bus(通用串行总线),目前USB 2.0接口分为四种类型A型.B型.Mini型还有后来补充的Micro型接口,每种接口都分插头和插座两个部分,Micro还 ...
- Visual Studio 2015 Update 1 成功安装后运行 “出现未能正确加载[XXXX]包,此问题可能是由配置更改或安装另一个扩展导致的。” 可能的解决方法
作死装Visual Studio 2015 update 1.安装过程中虽然波澜不惊,但是安装之后运行回报未能正确安装[XXXX]包.找了半天,在stackoverflow中找到了相关的问题,在问题描 ...
- Android Training精要(三)不同分辨率图片缩放倍数
各DPI图片倍率 xhdpi: 2.0 hdpi: 1.5 mdpi: 1.0 (baseline) ldpi: 0.75 这就意味着如果有一张xhdpi下200*200的图片, 你应该提供同样的图片 ...
- 三星 PMU NXE2000,x-powers的AXP228,NXE2000
核心板PMIC X4418CV2并没有用三星推荐的PMU NXE2000,而是自主研发,采用x-powers的AXP228,这是因为AXP228更符合用户的习惯,更适合做产品,他们有如下区别: PMU ...
- 【HDOJ】3033 I love sneakers!
分组背包. #include <stdio.h> #include <string.h> #define mymax(a, b) (a>b) ? a:b typedef ...
- How to convert an IPv4 address into a integer in C#?
仅仅针对于IPv4的处理方法 从string转换为int 以及从int转换为string // IPv4 int intAddress = BitConverter.ToInt32(IPAddress ...
- WordPress Tweet Blender插件跨站脚本漏洞
漏洞名称: WordPress Tweet Blender插件跨站脚本漏洞 CNNVD编号: CNNVD-201310-645 发布时间: 2013-10-30 更新时间: 2013-10-30 危害 ...
- WordPress RokIntroScroller插件‘thumb.php’多个安全漏洞
漏洞名称: WordPress RokIntroScroller插件‘thumb.php’多个安全漏洞 CNNVD编号: CNNVD-201309-383 发布时间: 2013-09-24 更新时间: ...