JSON详细学习之Gson in JAVA
来源:互联网 发布:免费下载绘图软件 编辑:程序博客网 时间:2024/06/02 02:38
需要依赖的jar包: gson-2.2.4.jar
这里我也用到了前面介绍JSONObject时创建的model类,直接看代码吧
- package com.peter.gson.test;
- import java.lang.reflect.Type;
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import com.google.gson.Gson;
- import com.google.gson.GsonBuilder;
- import com.google.gson.JsonElement;
- import com.google.gson.JsonObject;
- import com.google.gson.JsonParser;
- import com.google.gson.reflect.TypeToken;
- import com.peter.model.ClassInfo;
- import com.peter.model.Student;
- import com.peter.model.Teacher;
- /**
- * Gson类:解析json的最基础的工具类 JsonParser类:解析器来解析JSON到JsonElements的解析树
- * JsonElement类:一个类代表的JSON元素 JsonObject类:JSON对象类型 JsonArray类:JsonObject数组
- * TypeToken类:用于创建type,比如泛型List<?>
- *
- * @author Administrator
- *
- */
- public class Test {
- public static void main(String[] args) {
- Gson gson = new Gson();
- Student student1 = new Student();
- student1.setId(1);
- student1.setName(”李坤”);
- student1.setBirthDay(new Date());
- // //////////////////////////////////////////////////////////
- System.out.println(”———-简单对象之间的转化————-“);
- // 简单的bean转为json
- String s1 = gson.toJson(student1);
- System.out.println(”简单Bean转化为Json===” + s1);
- // json转为简单Bean
- Student student = gson.fromJson(s1, Student.class);
- System.out.println(”Json转为简单Bean===” + student);
- // 结果:
- // 简单Bean转化为Json==={“id”:1,”name”:”李坤”,”birthDay”:”Jun 22, 2012 8:27:52 AM”}
- // Json转为简单Bean===Student [birthDay=Fri Jun 22 08:27:52 CST 2012, id=1,
- // name=李坤]
- // //////////////////////////////////////////////////////////
- Student student2 = new Student();
- student2.setId(2);
- student2.setName(”曹贵生”);
- student2.setBirthDay(new Date());
- Student student3 = new Student();
- student3.setId(3);
- student3.setName(”柳波”);
- student3.setBirthDay(new Date());
- List<Student> list = new ArrayList<Student>();
- list.add(student1);
- list.add(student2);
- list.add(student3);
- System.out.println(”———-带泛型的List之间的转化————-“);
- // 带泛型的list转化为json
- String s2 = gson.toJson(list);
- System.out.println(”带泛型的list转化为json==” + s2);
- // json转为带泛型的list
- List<Student> retList = gson.fromJson(s2,
- new TypeToken<List<Student>>() {
- }.getType());
- for (Student stu : retList) {
- System.out.println(stu);
- }
- // 结果:
- // 带泛型的list转化为json==[{“id”:1,”name”:”李坤”,”birthDay”:”Jun 22, 2012 8:28:52 AM”},{“id”:2,”name”:”曹贵生”,”birthDay”:”Jun 22, 2012 8:28:52 AM”},{“id”:3,”name”:”柳波”,”birthDay”:”Jun 22, 2012 8:28:52 AM”}]
- // Student [birthDay=Fri Jun 22 08:28:52 CST 2012, id=1, name=李坤]
- // Student [birthDay=Fri Jun 22 08:28:52 CST 2012, id=2, name=曹贵生]
- // Student [birthDay=Fri Jun 22 08:28:52 CST 2012, id=3, name=柳波]
- Teacher t = new Teacher();
- t.setJabNum(”t101”);
- t.setName(”lijun”);
- ClassInfo ci = new ClassInfo();
- ci.setClassName(”cna”);
- ci.setClassNum(101);
- ci.setStudents(list);
- ci.setTeacher(t);
- String c = gson.toJson(ci);
- System.out.println(”ci to json //////////////”);
- System.out.println(c);
- System.out.println(”json to ci //////////”);
- ClassInfo cijson = gson.fromJson(c, ClassInfo.class);
- System.out.println(cijson);
- System.out.println(”handle date json//////////////////////////”);
- String jsonDateStr = ”{\”id\”:1,\”name\”:\”peter\”,\”birthDay\”:\”2013-01-04 10:30:30\”}”;
- gson = new GsonBuilder().setDateFormat(“yyyy-MM-dd HH:mm:ss”).create();
- Student stu = gson.fromJson(jsonDateStr, Student.class);
- System.out.println(stu);
- Gson dategson = new GsonBuilder().setDateFormat(“yyyy-MM-dd HH:mm:ss”)
- .create();
- String jsonString = dategson.toJson(
- new Date(System.currentTimeMillis()), Date.class);
- System.out.println(System.currentTimeMillis());
- System.out.println(jsonString);
- // (6)通过json对象直接操作json以及一些json的工具
- // a)格式化Json
- String json = ”[{\”id\”:\”1\”,\”name\”:\”Json技术\”},{\”id\”:\”2\”,\”name\”:\”java技术\”}]”;
- Gson pregson = new GsonBuilder().setPrettyPrinting().create();
- JsonParser jp = new JsonParser();
- JsonElement je = jp.parse(json);
- json = pregson.toJson(je);
- System.out.println(”格式化Json:” + json);
- // b)判断字符串是否是json,通过捕捉的异常来判断是否是json
- String comjson = ”{\”id\”:\”1\”,\”name\”:\”Json技术\”}”;
- boolean jsonFlag = false;
- try {
- new JsonParser().parse(comjson).getAsJsonObject();
- jsonFlag = true;
- } catch (Exception e) {
- jsonFlag = false;
- }
- System.out.println(”判断字符串是否是json:” + jsonFlag);
- // c)从json串中获取属性
- String prejson = ”{\”id\”:\”1\”,\”name\”:\”Json技术\”}”;
- String propertyName = ”id”;
- String propertyValue = ”“;
- try {
- JsonParser jsonParser = new JsonParser();
- JsonElement element = jsonParser.parse(prejson);
- JsonObject jsonObj = element.getAsJsonObject();
- propertyValue = jsonObj.get(propertyName).getAsString();
- } catch (Exception e) {
- propertyValue = null;
- }
- System.out.println(”从json串中获取属性:” + propertyValue);
- // d)除去json中的某个属性
- String json1 = ”{\”id\”:\”1\”,\”name\”:\”Json技术\”}”;
- String propertyName1 = ”id”;
- JsonParser jsonParser = new JsonParser();
- JsonElement element = jsonParser.parse(json1);
- JsonObject jsonObj = element.getAsJsonObject();
- jsonObj.remove(propertyName1);
- json1 = jsonObj.toString();
- System.out.println(”除去json中的某个属性:” + json1);
- // e)向json中添加属性
- String json2 = ”{\”id\”:\”1\”,\”name\”:\”Json技术\”}”;
- String propertyName2 = ”desc”;
- Object propertyValue2 = ”json各种技术的调研”;
- JsonParser jsonParser2 = new JsonParser();
- JsonElement element2 = jsonParser2.parse(json2);
- JsonObject jsonObj2 = element2.getAsJsonObject();
- jsonObj2.addProperty(propertyName2, new Gson().toJson(propertyValue2));
- json2 = jsonObj2.toString();
- System.out.println(”向json中添加属性:” + json2);
- // f)修改json中的属性
- json = ”{\”id\”:\”1\”,\”name\”:\”Json技术\”}”;
- propertyName = ”name”;
- propertyValue = ”json各种技术的调研”;
- jsonParser = new JsonParser();
- element = jsonParser.parse(json);
- jsonObj = element.getAsJsonObject();
- jsonObj.remove(propertyName);
- jsonObj.addProperty(propertyName, new Gson().toJson(propertyValue));
- json = jsonObj.toString();
- System.out.println(”修改json中的属性:” + json);
- // g)判断json中是否有属性
- json = ”{\”id\”:\”1\”,\”name\”:\”Json技术\”}”;
- propertyName = ”name”;
- boolean isContains = false;
- jsonParser = new JsonParser();
- element = jsonParser.parse(json);
- jsonObj = element.getAsJsonObject();
- isContains = jsonObj.has(propertyName);
- System.out.println(”判断json中是否有属性:” + isContains);
- // // h)json中日期格式的处理
- // GsonBuilder builder = new GsonBuilder();
- // builder.setDateFormat(“yyyy-MM-dd HH:mm:ss.SSS”);
- // Gson gson = builder.create();
- // // 然后使用gson对象进行json的处理,如果出现日期Date类的对象,就会按照设置的格式进行处理
- // // i)json中对于Html的转义
- // Gson gson = new Gson();
- // // 这种对象默认对Html进行转义,如果不想转义使用下面的方法
- // GsonBuilder builder = new GsonBuilder();
- // builder.disableHtmlEscaping();
- // Gson gson = builder.create();
- // map <–> json
- Map<String, String> colours = new HashMap<String, String>();
- colours.put(”BLACK”, “#000000”);
- colours.put(”RED”, “#FF0000”);
- colours.put(”GREEN”, “#008000”);
- colours.put(”BLUE”, “#0000FF”);
- colours.put(”YELLOW”, “#FFFF00”);
- colours.put(”WHITE”, “#FFFFFF”);
- //
- // Convert a Map into JSON string.
- //
- gson = new Gson();
- String jsonMap = gson.toJson(colours);
- System.out.println(”json = ” + jsonMap);
- //
- // Convert JSON string back to Map.
- //
- Type type = new TypeToken<Map<String, String>>() {
- }.getType();
- Map<String, String> map = gson.fromJson(jsonMap, type);
- for (String key : map.keySet()) {
- System.out.println(”map.get = ” + map.get(key));
- }
- }
- }
package com.peter.gson.test;import java.lang.reflect.Type;import java.util.ArrayList;import java.util.Date;import java.util.HashMap;import java.util.List;import java.util.Map;import com.google.gson.Gson;import com.google.gson.GsonBuilder;import com.google.gson.JsonElement;import com.google.gson.JsonObject;import com.google.gson.JsonParser;import com.google.gson.reflect.TypeToken;import com.peter.model.ClassInfo;import com.peter.model.Student;import com.peter.model.Teacher;/** * Gson类:解析json的最基础的工具类 JsonParser类:解析器来解析JSON到JsonElements的解析树 * JsonElement类:一个类代表的JSON元素 JsonObject类:JSON对象类型 JsonArray类:JsonObject数组 * TypeToken类:用于创建type,比如泛型List<?> * * @author Administrator * */public class Test { public static void main(String[] args) { Gson gson = new Gson(); Student student1 = new Student(); student1.setId(1); student1.setName("李坤"); student1.setBirthDay(new Date()); // ////////////////////////////////////////////////////////// System.out.println("----------简单对象之间的转化-------------"); // 简单的bean转为json String s1 = gson.toJson(student1); System.out.println("简单Bean转化为Json===" + s1); // json转为简单Bean Student student = gson.fromJson(s1, Student.class); System.out.println("Json转为简单Bean===" + student); // 结果: // 简单Bean转化为Json==={"id":1,"name":"李坤","birthDay":"Jun 22, 2012 8:27:52 AM"} // Json转为简单Bean===Student [birthDay=Fri Jun 22 08:27:52 CST 2012, id=1, // name=李坤] // ////////////////////////////////////////////////////////// Student student2 = new Student(); student2.setId(2); student2.setName("曹贵生"); student2.setBirthDay(new Date()); Student student3 = new Student(); student3.setId(3); student3.setName("柳波"); student3.setBirthDay(new Date()); List<Student> list = new ArrayList<Student>(); list.add(student1); list.add(student2); list.add(student3); System.out.println("----------带泛型的List之间的转化-------------"); // 带泛型的list转化为json String s2 = gson.toJson(list); System.out.println("带泛型的list转化为json==" + s2); // json转为带泛型的list List<Student> retList = gson.fromJson(s2, new TypeToken<List<Student>>() { }.getType()); for (Student stu : retList) { System.out.println(stu); } // 结果: // 带泛型的list转化为json==[{"id":1,"name":"李坤","birthDay":"Jun 22, 2012 8:28:52 AM"},{"id":2,"name":"曹贵生","birthDay":"Jun 22, 2012 8:28:52 AM"},{"id":3,"name":"柳波","birthDay":"Jun 22, 2012 8:28:52 AM"}] // Student [birthDay=Fri Jun 22 08:28:52 CST 2012, id=1, name=李坤] // Student [birthDay=Fri Jun 22 08:28:52 CST 2012, id=2, name=曹贵生] // Student [birthDay=Fri Jun 22 08:28:52 CST 2012, id=3, name=柳波] Teacher t = new Teacher(); t.setJabNum("t101"); t.setName("lijun"); ClassInfo ci = new ClassInfo(); ci.setClassName("cna"); ci.setClassNum(101); ci.setStudents(list); ci.setTeacher(t); String c = gson.toJson(ci); System.out.println("ci to json //////////////"); System.out.println(c); System.out.println("json to ci //////////"); ClassInfo cijson = gson.fromJson(c, ClassInfo.class); System.out.println(cijson); System.out.println("handle date json//////////////////////////"); String jsonDateStr = "{\"id\":1,\"name\":\"peter\",\"birthDay\":\"2013-01-04 10:30:30\"}"; gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create(); Student stu = gson.fromJson(jsonDateStr, Student.class); System.out.println(stu); Gson dategson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss") .create(); String jsonString = dategson.toJson( new Date(System.currentTimeMillis()), Date.class); System.out.println(System.currentTimeMillis()); System.out.println(jsonString); // (6)通过json对象直接操作json以及一些json的工具 // a)格式化Json String json = "[{\"id\":\"1\",\"name\":\"Json技术\"},{\"id\":\"2\",\"name\":\"java技术\"}]"; Gson pregson = new GsonBuilder().setPrettyPrinting().create(); JsonParser jp = new JsonParser(); JsonElement je = jp.parse(json); json = pregson.toJson(je); System.out.println("格式化Json:" + json); // b)判断字符串是否是json,通过捕捉的异常来判断是否是json String comjson = "{\"id\":\"1\",\"name\":\"Json技术\"}"; boolean jsonFlag = false; try { new JsonParser().parse(comjson).getAsJsonObject(); jsonFlag = true; } catch (Exception e) { jsonFlag = false; } System.out.println("判断字符串是否是json:" + jsonFlag); // c)从json串中获取属性 String prejson = "{\"id\":\"1\",\"name\":\"Json技术\"}"; String propertyName = "id"; String propertyValue = ""; try { JsonParser jsonParser = new JsonParser(); JsonElement element = jsonParser.parse(prejson); JsonObject jsonObj = element.getAsJsonObject(); propertyValue = jsonObj.get(propertyName).getAsString(); } catch (Exception e) { propertyValue = null; } System.out.println("从json串中获取属性:" + propertyValue); // d)除去json中的某个属性 String json1 = "{\"id\":\"1\",\"name\":\"Json技术\"}"; String propertyName1 = "id"; JsonParser jsonParser = new JsonParser(); JsonElement element = jsonParser.parse(json1); JsonObject jsonObj = element.getAsJsonObject(); jsonObj.remove(propertyName1); json1 = jsonObj.toString(); System.out.println("除去json中的某个属性:" + json1); // e)向json中添加属性 String json2 = "{\"id\":\"1\",\"name\":\"Json技术\"}"; String propertyName2 = "desc"; Object propertyValue2 = "json各种技术的调研"; JsonParser jsonParser2 = new JsonParser(); JsonElement element2 = jsonParser2.parse(json2); JsonObject jsonObj2 = element2.getAsJsonObject(); jsonObj2.addProperty(propertyName2, new Gson().toJson(propertyValue2)); json2 = jsonObj2.toString(); System.out.println("向json中添加属性:" + json2); // f)修改json中的属性 json = "{\"id\":\"1\",\"name\":\"Json技术\"}"; propertyName = "name"; propertyValue = "json各种技术的调研"; jsonParser = new JsonParser(); element = jsonParser.parse(json); jsonObj = element.getAsJsonObject(); jsonObj.remove(propertyName); jsonObj.addProperty(propertyName, new Gson().toJson(propertyValue)); json = jsonObj.toString(); System.out.println("修改json中的属性:" + json); // g)判断json中是否有属性 json = "{\"id\":\"1\",\"name\":\"Json技术\"}"; propertyName = "name"; boolean isContains = false; jsonParser = new JsonParser(); element = jsonParser.parse(json); jsonObj = element.getAsJsonObject(); isContains = jsonObj.has(propertyName); System.out.println("判断json中是否有属性:" + isContains); // // h)json中日期格式的处理 // GsonBuilder builder = new GsonBuilder(); // builder.setDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); // Gson gson = builder.create(); // // 然后使用gson对象进行json的处理,如果出现日期Date类的对象,就会按照设置的格式进行处理 // // i)json中对于Html的转义 // Gson gson = new Gson(); // // 这种对象默认对Html进行转义,如果不想转义使用下面的方法 // GsonBuilder builder = new GsonBuilder(); // builder.disableHtmlEscaping(); // Gson gson = builder.create(); // map <--> json Map<String, String> colours = new HashMap<String, String>(); colours.put("BLACK", "#000000"); colours.put("RED", "#FF0000"); colours.put("GREEN", "#008000"); colours.put("BLUE", "#0000FF"); colours.put("YELLOW", "#FFFF00"); colours.put("WHITE", "#FFFFFF"); // // Convert a Map into JSON string. // gson = new Gson(); String jsonMap = gson.toJson(colours); System.out.println("json = " + jsonMap); // // Convert JSON string back to Map. // Type type = new TypeToken<Map<String, String>>() { }.getType(); Map<String, String> map = gson.fromJson(jsonMap, type); for (String key : map.keySet()) { System.out.println("map.get = " + map.get(key)); } }}
运行结果请自行测试学习。
在此,关于Json的学习告一段落.
工程地址: http://download.csdn.net/detail/linpe/9558729
阅读全文
0 0
- JSON详细学习之Gson in JAVA
- JSON详细学习之Gson in JAVA
- JSON详细学习之JSONObject in JAVA
- JSON详细学习之JSONObject in JAVA
- JSON详细学习之JSONObject in JAVA
- JSON详细学习之JSONObject in JAVA
- JSON详细学习之JSONObject in JAVA
- JSON详细学习之JSONObject in JAVA
- JSON详细学习之JackSon in JAVA
- JSON详细学习之JSON in JavaScript
- Json与Java对象互转之Gson学习
- Google Json之GSON学习笔记
- Android学习之Json解析库Gson
- JSON教程之GSON基本解析(Gson-Java)
- JSON教程之GSON基本解析(Java-Gson)
- How to read and write JSON files in Java(Gson)
- json/Gson的学习
- JSON和GSON学习
- 【LeetCode】104 Maximum Depth of Binary Tree
- leetcode-4-Median of Two Sorted Arrays
- 2017暑假集训 div1 连通图(2)
- “玲珑杯”ACM比赛 Round #18 C -- 图论你先敲完模板
- 判断链表是否有交点若有找出交点
- JSON详细学习之Gson in JAVA
- 适配器模式
- 冒泡排序简单改进
- python基础之异常处理、调试和正则表达式
- 表单
- Prim 模板
- [状态压缩||折半搜索]51nod 算法马拉松3 A
- 数组2
- VC6.0加载lib文件的三种方法