在上一讲中我们讲到了 JSON数据格式的内容,这一讲我们来讲一下Google对JSON这种格式的支持。
我们看到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.javapackage 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"]}
关注下一篇博文,下一我博文我会对JSON与GSON在Android客户端与服务端的应用做一个统一的梳理,敬请关注。