Json之java-Gson

Gson-Google出品的Json處理工具,網上好評大片,先來學習一下。html

先列出網上找到的一個評價:java

Gson是目前功能最全的Json解析神器,Gson當初是爲因應Google公司內部需求而由Google自行研發而來,但自從在2008年五月公開發布初版後已被許多公司或用戶應用。Gson的應用主要爲toJson與fromJson兩個轉換函數,無依賴,不須要例外額外的jar,可以直接跑在JDK上
而在使用這種對象轉換以前需先建立好對象的類型以及其成員才能成功的將JSON字符串成功轉換成相對應的對象。類裏面只要有get和set方法,Gson徹底能夠將複雜類型的json到bean或bean到json的轉換,是JSON解析的神器。json

 

實踐的一些代碼api

  1 import com.google.gson.*;
  2 import com.google.gson.reflect.TypeToken;
  3 import org.junit.Test;
  4 
  5 import java.util.ArrayList;
  6 import java.util.Date;
  7 import java.util.List;
  8 
  9 public class GsonUse {
 10     /**
 11      * Gson經常使用場景
 12      */
 13     @Test
 14     public void useGsonCommon() {
 15         Gson gson = new Gson(); // 解析json最基礎的工具類
 16         GsonBuilder gsonBuilder = new GsonBuilder();  // Gson對象構建類,能夠gson對象作一些全局設置。再建立gson對象
 17         gson = gsonBuilder.create(); // 能過GsonBuilder ,生成gson對象
 18 
 19         JsonParser jsonParser = new JsonParser(); // Json解析器
 20         JsonElement jsonElement = jsonParser.parse("{}");  // 用Json解析器解析json字符串爲Json元素,
 21         // JsonElement 能夠是JsonObject或者JsonArray,根據實際發問轉化
 22         JsonObject jsonObject = new JsonObject();
 23         jsonObject = jsonElement.getAsJsonObject();
 24         JsonArray jsonArray = new JsonArray();
 25         jsonArray = jsonArray.getAsJsonArray();
 26 
 27         User user = new User();
 28         user.setAge(12);
 29         user.setName("[123]");
 30         // bean -> json
 31         String userJson = gson.toJson(user);
 32         System.out.println(userJson);
 33         // json -> bean
 34         User u = gson.fromJson(userJson, User.class);
 35 
 36         //構造集合
 37         List<User> users = new ArrayList<User>();
 38         User u_i = null;
 39         for (int i = 0; i < 10; i++) {
 40             u_i = new User();
 41             u_i.setAge(i);
 42             u_i.setName("name" + i);
 43             users.add(u_i);
 44         }
 45         String usersJson = gson.toJson(users);
 46         System.out.println(userJson);
 47         // **********************注意:TypeToken的用法 **********************
 48         List<User> userList = gson.fromJson(usersJson, new TypeToken<List<User>>() {
 49         }.getType());
 50         // Set<User> userSet = gson.fromJson(usersJson,new TypeToken<Set<User>>(){}.getType());
 51         // Map<String,User> userMap = gson.fromJson(userJson,new TypeToken<Map<String,User>>(){}.getType());
 52         System.out.println(userList);
 53     }
 54 
 55     /**
 56      * 格式化json
 57      */
 58     @Test
 59     public void formateJson() {
 60         String jsonStr = "[{\"id\":\"1\",\"name\":\"Json技術\"},{\"id\":\"2\",\"name\":\"java技術\"}]";
 61         // 建立可以格式化的轉出json字符串的Gson對象
 62         Gson gson = new GsonBuilder().setPrettyPrinting().create();
 63         JsonParser jsonParser = new JsonParser();
 64         JsonElement jsonElement = jsonParser.parse(jsonStr);
 65         String formatedJson = gson.toJson(jsonElement);
 66         // 將json字符串格式化輸出
 67         System.out.println(formatedJson);
 68     }
 69 
 70     /**
 71      * Json屬性操做:刪除,添加,判斷是否存在屬性,修改
 72      */
 73     @Test
 74     public void jsonAttrOpt() {
 75         String jsonStr = "[{\"id\":\"1\",\"name\":\"Json技術\"},{\"id\":\"2\",\"name\":\"java技術\"}]";
 76         JsonParser jsonParser = new JsonParser();
 77         JsonElement jsonElement = jsonParser.parse(jsonStr);
 78         JsonArray jsonArray = jsonElement.getAsJsonArray();
 79         JsonObject jObj = jsonArray.get(0).getAsJsonObject();
 80         // 判斷是否存在屬性id
 81         boolean hasId = jObj.has("id");
 82         System.out.println(hasId);
 83 
 84         // 添加屬性
 85         jObj.addProperty("age", 12);
 86         System.out.println(jObj);
 87         // 刪除屬性
 88         jObj.remove("age");
 89         System.out.println(jObj);
 90         //修改屬性,先刪除,再添加
 91         jObj.remove("name");
 92         jObj.addProperty("name", new Gson().toJson("[8888]"));
 93         System.out.println(jObj);
 94     }
 95 
 96     /**
 97      * 經過GsonBuilder對Gson對象作一些配置,如日期格式化等等
 98      */
 99     @Test
100     public void gsonBuilderUse() {
101         GsonBuilder gsonBuilder = new GsonBuilder();
102         // 設置時間格式
103         gsonBuilder.setDateFormat("yyyy-MM-dd hh:mm:ss");
104         // 取消對html的轉義
105         //gsonBuilder.disableHtmlEscaping();
106 
107         Gson gson = gsonBuilder.create();
108         System.out.println(gson.toJson(new Date()));
109 
110         System.out.println(gson.toJson("<!DOCTYPE html> <html> <head> <title></title> </head> <body> </body> </html>"));
111 
112         //轉義輸出:"\u003c!DOCTYPE html\u003e \u003chtml\u003e \u003chead\u003e \u003ctitle\u003e\u003c/title\u003e \u003c/head\u003e \u003cbody\u003e \u003c/body\u003e \u003c/html\u003e"
113         // 不轉義輸出: "<!DOCTYPE html> <html> <head> <title></title> </head> <body> </body> </html>"
114 
115     }
116 }

 

添加Gson依賴函數

1         <dependency>
2             <groupId>com.google.code.gson</groupId>
3             <artifactId>gson</artifactId>
4             <version>2.8.2</version>
5         </dependency>
相關文章
相關標籤/搜索