GSON是谷歌提供的开源库,用来解析Json格式的数据,非常好用。如果要使用GSON的话,则要先下载gson-2.2.4.jar这个文件,如果是在Android项目中使用,则在Android项目的libs目录下添加这个文件即可;如果是在Java项目中,则把gson-2.2.4.jar先添加到当前项目的任意一个包中,然后右键点击这个jar包 -> 构建路径 -> 添加至构建路径。这样准备工作就做好了。
(一)单条无嵌套Json数据的解析
比如有如下Json数据:{"name":"John", "age":20} //也可以用单引号,写成:{'name':'John', 'age':20}
解析该数据步骤如下:
1、定义Person类:
1 public class Person{ 2 3 private String name; //属性都定义成String类型,并且属性名要和Json数据中的键值对的键名完全一样 4 5 private String age; 6 7 ...//提供所有属性的getter和setter方法 8 9 }
2、创建GSON对象并解析:
1 String jsonData = "{\"name\":\"John\", \"age\":20}"; //注:这里也可以不使用转义字符,而用单引号:String jsonData = "{'name':'John', 'age':20}"; 2 Gson gson = new Gson(); 3 Person person = gson.fromJson(jsonData,Person.class);
3、然后使用Person对象的getter方法就可以获取到数据了。
4、扩展:考虑到Json数据的不同,那么解析Json的时候所用的类也可能不同,比如这里用的是Person,如果解析其他数据可能用的又是Dog、Cat...所以考虑将用GSON解析的步骤封装,并提供泛型参数,示例程序如下:
1 import com.google.gson.Gson; 2 3 /** 4 * 用GSON解析单条Json数据 5 * 6 */ 7 public class GsonTest1 { 8 public static void main(String[] args) { 9 String jsonData = "{'name':'John', 'age':20}"; 10 Person person = GsonUtil.parseJsonWithGson(jsonData, Person.class); 11 System.out.println(person.getName() + "," + person.getAge()); 12 } 13 } 14 15 /* 16 * 封装的GSON解析工具类,提供泛型参数 17 */ 18 class GsonUtil { 19 //将Json数据解析成相应的映射对象 20 public static <T> T parseJsonWithGson(String jsonData, Class<T> type) { 21 Gson gson = new