@Test public void testObj2Json(){ // 定义对象 Person person = new Person(); person.setId(1); person.setName("jim"); person.setAge(24); person.setMale(true); person.setBirthday(new Date()); // 实例化Gson并使用方法toJson(Object src)转json串 Gson gson = new Gson(); String jsonStr = gson.toJson(person); // 输出 System.out.println(jsonStr); } /** * Gson节点对象: * JsonElement:所有的节点 都是JsonElement对象. * JsonPrimitive:基本数据类型的节点对象,JsonElement的子类. * JsonNull:空节点对象,JsonElement的子类. * JsonObject : 对象节点对象, JsonElement的 子类. * JsonArray : 数组节点对象, JsonElement的子类. * JsonElement的取值: * JsonPrimitive:value的 取值对应 java的int,double,float,long,short,boolean,char,byte,String,BigDecimal,BigInteger,Number * JsonObject:value的取值对应 java的Object对象. * JsonArray:value的取值对应java的List及其子类对象. */ @Test public void testJson2Obj(){ // {"id":1,"name":"jim","age":24,"isMale":true,"birthday":"Sep 6, 2015 6:06:34 AM"} String json = "{"id":1,"name":"jim","age":24,"isMale":true,"birthday":"Sep 6, 2015 6:06:34 AM"}"; // 实例化Gson实例,并 使用 fromJson(String json, Class<Person> classOfT)来转成对象 Gson gson = new Gson(); Person p = gson.fromJson(json, Person.class); // 输出 System.out.println(p); } @Test public void testJson2List(){ String json = "[{"id":1,"name":"jim","age":24,"isMale":true,"birthday":"Sep 6, 2015 6:06:34 AM"},{"id":2,"name":"jack","age":25,"isMale":true,"birthday":"Sep 3, 2015 9:06:34 PM"}]"; // 实例化Gson实例,并 使用 fromJson(String json, Class<Person> classOfT)来转成对象 // 使用 TypeToken 来封装List类型 Gson gson = new Gson(); List<Person> ps = gson.fromJson(json, new TypeToken<List<Person>>(){}.getType()); for (Person person : ps) { System.out.println(person); } } @Test public void testJson2Map(){ String json = "{"p1":{"id":1,"name":"jim","age":24,"isMale":true,"birthday":"Sep 6, 2015 6:06:34 AM"},"p2":{"id":2,"name":"jack","age":25,"isMale":true,"birthday":"Sep 3, 2015 9:06:34 PM"}}"; // 实例化Gson实例,并 使用 fromJson(String json, Class<Person> classOfT)来转成对象 // 使用 TypeToken 来封装Map类型 Gson gson = new Gson(); Map<String,Person> pmap = gson.fromJson(json, new TypeToken<Map<String,Person>>(){}.getType()); // 迭代输出 for (Iterator<String> iter = pmap.keySet().iterator();iter.hasNext();) { String key = iter.next(); Person val = pmap.get(key); System.out.println(key + ":" + val); } } @Test public void testParseJson(){ String json = "{"p1":{"id":1,"name":"jim","age":24,"isMale":true,"birthday":"Sep 6, 2015 6:06:34 AM"},"p2":{"id":2,"name":"jack","age":25,"isMale":true,"birthday":"Sep 3, 2015 9:06:34 PM"}}"; // Json 解析对象,先获取整个json串 JsonParser jp = new JsonParser(); JsonElement element = jp.parse(json); // 整个是一个对象,因此先获取Object,在从Object中获取Object(key=p1) JsonObject jobj = element.getAsJsonObject(); JsonObject p1 = jobj.getAsJsonObject("p1"); // 获取到的Object在转换成Person对象 Person p = new Gson().fromJson(p1, Person.class); System.out.println(p); }
代码: https://github.com/cbooy/GsonDemo