javascript
四种JSON解析工具--(json-libJacksonGsonFastJson)
主要分為以下四類:
一、json-lib
json-lib是較早出現且應用最廣泛的json解析工具,但是較多的依賴第三方jar包。
使用json-lib需引入以下jar包:
- commons-beanutils-1.8.3.jar
- commons-collections-3.2.1.jar
- commons-lang-2.6.jar
- commons-logging-1.1.1.jar
- ezmorph-1.0.6.jar
- json-lib-2.4-jdk15.jar
且較復雜的類型轉換json-lib會產生缺陷,出現問題。因此json-lib如今一般無法滿足互聯網化的需求。
使用實例:
jar包及項目結構如下:
實體類Product.java
測試代碼TestDemo.java
- JavaBean/ list/ map轉json
代碼如下:
//創建product對象Product product1 = new Product("火龍果",20d,"水果",2d);Product product2 = new Product("東北散裝珍珠米",10d,"糧食",3d);Product product3 = new Product("排骨",24d,"肉類",0.5d);//創建產品list集合List<Product> list =new ArrayList<Product>();list.add(product1);list.add(product2);list.add(product3);//創建產品map集合Map<String, Product> map = new HashMap<String, Product>();map.put(product1.getName(), product1);map.put(product2.getName(), product2);map.put(product3.getName(), product3);//將product轉換為jsonJSONArray jsonBean = JSONArray.fromObject(product1);System.out.println("輸出product的json數據");System.out.println(jsonBean);//將list集合轉換為jsonJSONArray jsonArray = JSONArray.fromObject(list);System.out.println("輸出list的json數據");System.out.println(jsonArray);//將map集合轉為jsonJSONArray jsonMap = JSONArray.fromObject(map);System.out.println("輸出map的json數據");System.out.println(jsonMap);結果如下:
-
使用JsonCofig進行篩選要顯示的數據
/** 設置篩選條件*/JsonConfig jsonConfig = new JsonConfig();jsonConfig.setExcludes(new String[] {"weight", "category"});//單個bean不顯示重量,分類System.out.println("輸出product篩選的json數據");JSONArray jsonBean1 = JSONArray.fromObject(product1, jsonConfig);System.out.println(jsonBean1);//list不顯示重量分類System.out.println("輸出list篩選的json數據");JSONArray jsonArray1 = JSONArray.fromObject(list, jsonConfig);System.out.println(jsonArray1);//map不顯示重量分類JSONArray jsonMap1 = JSONArray.fromObject(map, jsonConfig);System.out.println("輸出mapt篩選的json數據");System.out.println(jsonMap1);
結果如下:
-
jsonObject轉為JavaBean
//jsonObject轉換為JavaBeanString str = "{'name':'雞蛋','price':8,'weight':1.3,'category':'禽蛋'}";Product product4 = (Product) JSONObject.toBean(JSONObject.fromObject(str), Product.class);System.out.println(product4);
結果如下:
二、Jackson
jackson相比于json-lib框架,所需要的依賴jar包要少一點,性能較高且簡單易用。
需引入jar包:
- jackson-core.jar
- jackson-mapper.jar
實例如下:
- 項目結構及jar包
- 實體類同前
- 測試類
轉json
//創建product對象 Product product1 = new Product("火龍果",20d,"水果",2d); Product product2 = new Product("東北散裝珍珠米",10d,"糧食",3d); Product product3 = new Product("排骨",24d,"肉類",0.5d); //創建產品list集合 List<Product> list =new ArrayList<Product>(); list.add(product1); list.add(product2); list.add(product3); //創建產品map集合 Map<String, Product> map = new HashMap<String, Product>(); map.put(product1.getName(), product1); map.put(product2.getName(), product2); map.put(product3.getName(), product3);//ObjectMapper為Jackson的核心,所有json操作都是用ObjectMapper實現 ObjectMapper mapper = new ObjectMapper();//Product轉化為json String productJson = mapper.writeValueAsString(product1); System.out.println("Product轉化為json"); System.out.println(productJson); //list轉化為json String listJson = mapper.writeValueAsString(list); System.out.println("list轉化為json"); System.out.println(listJson); //map轉化為json String mapJson = mapper.writeValueAsString(map); System.out.println("map轉化為json"); System.out.println(mapJson);結果如下:
轉化為JavaBean
字符串需使用雙引號,使用單引號報錯
結果如下:
三、Gson
Gson是Google研發的,目前功能最全的Json解析器。主要應用toJson和fromJson兩個轉換函數,無需額外的依賴,使用較方便
使用jar包:
- gson-2.8.0.jar
實例如下(實體類同上例):
轉化為json
// 創建product對象Product product1 = new Product("火龍果", 20d, "水果", 2d);Product product2 = new Product("東北散裝珍珠米", 10d, "糧食", 3d);Product product3 = new Product("排骨", 24d, "肉類", 0.5d);// 創建產品list集合List<Product> list = new ArrayList<Product>();list.add(product1);list.add(product2);list.add(product3);// 創建產品map集合Map<String, Product> map = new HashMap<String, Product>();map.put(product1.getName(), product1);map.put(product2.getName(), product2);map.put(product3.getName(), product3);// 創建Gson對象 Gson gson = new Gson();//將product轉換為json System.out.println("輸出product的json數據"); String jsonProduct = gson.toJson(product1); System.out.println(jsonProduct); //將list集合轉換為json System.out.println("輸出list的json數據"); String jsonArray = gson.toJson(list); System.out.println(jsonArray); //將map集合轉為json String jsonMap = gson.toJson(map); System.out.println("輸出map的json數據"); System.out.println(jsonMap);結果如下:
json轉換為實體
結果如下:
四、FastJson
FastJson是阿里巴巴的開源框架,速度很快,且無其他依賴
導入jar包:
- fastjson-1.2.58.jar
實例如下:
轉為json
String jsonProduct = JSON.toJSONString(product1);System.out.println(jsonProduct);String jsonArray = JSON.toJSONString(list);System.out.println(jsonArray);String jsonMap = JSON.toJSONString(map);System.out.println(jsonMap);結果如下:
json轉為實體:
結果如下:
以上是JSON的四種解析工具的基礎用法。詳細的后部再單個補充。
總結
以上是生活随笔為你收集整理的四种JSON解析工具--(json-libJacksonGsonFastJson)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 8.最大公约数和最小公倍数问题
- 下一篇: eclipse 新建java无scr_解