我们看到Java中的JSON库除了org.json之外还有一个 google-gson这个也是Java中很常用的json库,它是google自定义的json库,功能很强大,支持泛型,它也可以实现从json到java对象的装换,也可以从java对象转换成json数据。最重要的是Gson可以与任意的Java对象一起工作包括已经存在的你没法获取到它源代码的对象。(也就是有些对象提供给你是以Jar文件或者.class文件的形式提供给你的,这样你就只能使用这个对象,却无法去修改它的源代码)
更多关于Gson内容查看其主页:http://code.google.com/p/google-gson/
GSON的作用主要是完成 JSON数据格式与Java对象的互相转换
1. 下载GSON这个开源项目以及查看它的API文档
基本上我们一般是用com.google.gson这个类就可以解决大多数的问题。其中我们最长用的是这两个方法:
1) fromJson() :从JSON到Java对象
2) toJson():从Java对象转换成Json的字符串
2. 下面我们就来学习一下GSON的相关用法
1) 首先要在MyEclipse中导入GSON的jar文件
在项目中右键 ---> Build Path ---> Configure Build Path ---> Libraries标签页---> add External JARs ---> 指定外部Jar文件所在目录 ---> OK. 如下图所示
2) 程序Demo如下,先写一个Person类,用来获取Person对象的属性
Person.java
GsonTest.java 讲person对象转换为JSON数据,此时person对象有四个属性。
- package com.ahuier.json;
- public class Person {
- private String username;
- private String password;
- private int age;
- private String address;
- 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 getAge() {
- return age;
- }
- public void setAge(int age) {
- this.age = age;
- }
- public String getAddress() {
- return address;
- }
- public void setAddress(String address) {
- this.address = address;
- }
- }
程序执行结果如下:打印出来的是一个完全符合JSON格式的字符串。所以使用GSON是特别方便的。
- package com.ahuier.json;
- import com.google.gson.Gson;
- public class GsonTest {
- public static void main(String[] args) {
- Person person = new Person();
- person.setUsername("AHuier");
- person.setPassword("123456");
- person.setAddress("XIAMEN");
- person.setAge(30);
- // 如果客户端如JavaScript需要使用到这些对象,直接使用不行,所以需要用GSON来做桥梁
- // 用gson将对象转换成Json的字符串
- Gson gson = new Gson();
- String result = gson.toJson(person);
- System.out.println(result);
- }
- }
{"username":"AHuier","password":"123456","age":30,"address":"XIAMEN"}
3) 在上述程序的基础上我们在Person类里面添加一个list,然后往list中添加三条数据,实验一下GSON处理person对象转换成JSON数据格式是什么样的。
1. Person.java现在对于person对象来说有三个普通的属性,还有一个集合的属性,集合里面有三个字符串.
2. GsonTest.java
- package com.ahuier.json;
- import java.util.ArrayList;
- import java.util.List;
- public class Person {
- private String username;
- private String password;
- private int age;
- private String address;
- private List<String> list = new ArrayList<String>();
- public List<String> getList() {
- return list;
- }
- public void setList(List<String> list) {
- this.list = list;
- }
- 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 getAge() {
- return age;
- }
- public void setAge(int age) {
- this.age = age;
- }
- public String getAddress() {
- return address;
- }
- public void setAddress(String address) {
- this.address = address;
- }
- }
程序执行结果如下,很显然它将List转换为数组的形式了,下面就是将person对象转换成JSON的数据格式了。
- package com.ahuier.json;
- import com.google.gson.Gson;
- public class GsonTest {
- public static void main(String[] args) {
- Person person = new Person();
- person.setUsername("AHuier");
- person.setPassword("123456");
- person.setAddress("XIAMEN");
- person.setAge(30);
- // Json中没有集合的概念,显然这边list在JSON中都会转换成数组的形式。
- person.getList().add("YouNi");
- person.getList().add("AHui");
- person.getList().add("AHuier|YouNi");
- Gson gson = new Gson();
- String result = gson.toJson(person);
- System.out.println(result);
- }
- }
{"username":"AHuier","password":"123456","age":30,"address":"XIAMEN","list":["YouNi","AHui","AHuier|YouNi"]}