当前位置: 首页 > ops >正文

gson快速入门和使用详解

gson介绍

Google Gson是一个简单的基于Java的库,用于将Java对象序列化为JSON,反之亦然。 它是由Google开发的一个开源库。
以下几点说明为什么应该使用这个库 :
标准化 - Gson是一个由Google管理的标准化库。
高效 - 这是对Java标准库的可靠,快速和高效的扩展。
优化 - Gson库经过高度优化。
支持泛型 - 它为泛型提供了广泛的支持。
支持复杂的内部类 - 它支持具有深度继承层次结构的复杂对象。

gson引入

maven引入

<dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.8.2</version>
</dependency>

gson的api快速入门

//javaBean-->json@Testpublic 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@Testpublic 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@Testpublic 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@Testpublic 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@Testpublic 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@Testpublic 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());}}
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;}}
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只是不会自动提示,自己敲出来的是不会报错的,嗯,我就遇到这一个小小的问题,总体来说这个东东还是很好用的。

http://www.xdnf.cn/news/11291.html

相关文章:

  • cordova 一个将web应用程序封装成app的框架
  • C++ lambda表达式用法说明
  • Oracle中decode函数详解
  • 麦克斯韦方程组(彩图完美解释版)
  • 设计模式之单例、工厂、观察者模式
  • 张国荣一生57部电影海报全集
  • Kali-登录暴力破解器工具-medusa使用
  • 【硬件工程师】一次性讲透RS485接口
  • 数字版权管理 DRM 简介
  • 什么是RIA技术,RIA技术概览
  • 常用计算机外部设备有哪些,常用的计算机外设有哪些?
  • [转载]希捷固件门7200.12 CC46固件升级方法
  • Verilog任意分频器设计
  • 史蒂夫·乔布斯 - 简介
  • 个人博客搭建流程(域名、主机、解析、源码、搭建)全程详解
  • Template、ItemsPanel、ItemContainerStyle、ItemTemplate区别和联系
  • JSP基于Java的网咖计费管理系统91y3v程序+源码+数据库+调试部署+开发环境
  • 修改服务器网卡设置,网络适配器怎么设置网络好 完美的三种网络适配器设置方法...
  • linux虚拟机 Ubuntu 安装方法
  • iOS 7新功能汇总!
  • 《你不可不知的人性》刘墉 读书笔记(五)
  • 背单词软件 单词风暴 分享id_周一考研高效背单词系列(一):利用单词软件如何背好单词...
  • 中国最好的一些源码下载站点排名!
  • eclipse3.3.X版本中文语言包下载及安装
  • 基于单片机智能温度控制器系统设计
  • [Unity3D] 3D贪吃蛇
  • Lotus Notes 的新用户最需知道的十件事
  • 网站推广
  • ***常用工具下载大全
  • C语言多线程