常見的三種json操作工具(jackson,gson,fastjson)
一 jackson
Jackson有1.x系列和2.x系列,2.x系列有3個jar包需要下載:
jackson-core-2.2.3.jar(核心jar包)
jackson-annotations-2.2.3.jar(該包提供Json註解支援)
jackson-databind-2.2.3.jar (包含以上兩個)
maven依賴
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.5.3</version> </dependency>
由於篇幅和時間原因,這裡不再寫model,都用list,map代替
import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * json解析測試 * * @Author: Mr_li * @CreateDate: 2018-11-07$ 14:48$ * @Version: 1.0 */ public class JackSonTestCase { private static ObjectMapper mapper = new ObjectMapper(); /** * 資料準備 */ static class getData { Map<String, Object> map = new HashMap<String, Object>(); List<String> list = new ArrayList<>(); List<Map<String, Object>> listMap = new ArrayList<Map<String, Object>>(); public Map<String, Object> getMap() { map.put("name", "張三"); map.put("age", "18"); return map; } public List<String> getList() { list.add("a"); list.add("b"); return list; } public List<Map<String, Object>> getListMap() { listMap.add(getMap()); return listMap; } } /** * ObjectMapper是JSON操作的核心,Jackson的所有JSON操作都是在ObjectMapper中實現。 * ObjectMapper有多個JSON序列化的方法,可以把JSON字串儲存File、OutputStream等不同的介質中。 * writeValue(File arg0, Object arg1)把arg1轉成json序列,並儲存到arg0檔案中。 * writeValue(OutputStream arg0, Object arg1)把arg1轉成json序列,並儲存到arg0輸出流中。 * writeValueAsBytes(Object arg0)把arg0轉成json序列,並把結果輸出成位元組陣列。 * writeValueAsString(Object arg0)把arg0轉成json序列,並把結果輸出成字串。 */ public static void test() throws IOException { //javaObj-->>jsonStr String json = mapper.writeValueAsString(new getData().getMap()); //jsonStr-->>jsonObj String json1 = "{ \"brand\" : \"Mercedes\", \"doors\" : 5 }"; //1 Object o = mapper.readValue(json, Object.class); //2 List<Map<String, Object>> beanList = mapper.readValue(json, new TypeReference<List<Map<String, Object>>>() { }); } public static void main(String[] args) throws IOException { JackSonTestCase.test(); } }
二 fastjson
fastJson對於json格式字串的解析主要用到了一下三個類:
JSON:fastJson的解析器,用於JSON格式字串與JSON物件及javaBean之間的轉換。
JSONObject:fastJson提供的json物件。
JSONArray:fastJson提供json陣列物件。
maven依賴
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.51</version> </dependency>
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* json解析測試
*
* @Author: Mr_li
* @CreateDate: 2018-11-07$ 14:48$
* @Version: 1.0
*/
public class FastjsonTestCase {
private static JSONObject jsonObject = new JSONObject();
private static JSONArray jsonArr = new JSONArray();
class Student {
private String studentName;
private Integer studentAge;
public String getStudentName() {
return studentName;
}
public void setStudentName(String studentName) {
this.studentName = studentName;
}
public Integer getStudentAge() {
return studentAge;
}
public void setStudentAge(Integer studentAge) {
this.studentAge = studentAge;
}
}
/**
* 資料準備
*/
static class getData {
Map<String, Object> map = new HashMap<String, Object>();
List<String> list = new ArrayList<>();
List<Map<String, Object>> listMap = new ArrayList<Map<String, Object>>();
public Map<String, Object> getMap() {
map.put("name", "張三");
map.put("age", "18");
return map;
}
public List<String> getList() {
list.add("a");
list.add("b");
return list;
}
public List<Map<String, Object>> getListMap() {
listMap.add(getMap());
return listMap;
}
}
public static void test() throws IOException {
//jsonStr-->>jsonObj
String json1 = "{\"studentName\":\"lily\",\"studentAge\":12}";
JSONObject jsonObject = JSON.parseObject(json1);
//jsonStr-->>jsonArray
String json2 = "[{\"studentName\":\"lily\",\"studentAge\":12},{\"studentName\":\"lucy\",\"studentAge\":15}]";
JSONArray jsonArray = JSON.parseArray(json1);
//jsonstr-->>javaObj
Student student = JSON.parseObject(json2, Student.class);
List<Student> list = new ArrayList<Student>();
ArrayList<Student> list1 = (ArrayList<Student>) JSONObject.parseObject(json2, List.class);
//javaObj-->>jsonStr
String jsonString = JSON.toJSONString(student);
}
public static void main(String[] args) throws IOException {
FastjsonTestCase.test();
}
}
三 gson
目前網路上有很多介面是Json形式的,Gson是谷歌開源的Json解析庫,可以方便的將Java物件轉換成Json字串,也可以方便的將Json字串轉換成Java物件。
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* json解析測試
*
* @Author: Mr_li
* @CreateDate: 2018-11-07$ 14:48$
* @Version: 1.0
*/
public class GsonTestCase {
private static Gson gson = new Gson();
private static JsonParser parser = new JsonParser();
class Student {
private String studentName;
private Integer studentAge;
public String getStudentName() {
return studentName;
}
public void setStudentName(String studentName) {
this.studentName = studentName;
}
public Integer getStudentAge() {
return studentAge;
}
public void setStudentAge(Integer studentAge) {
this.studentAge = studentAge;
}
}
/**
* 資料準備
*/
static class getData {
Map<String, Object> map = new HashMap<String, Object>();
List<String> list = new ArrayList<>();
List<Map<String, Object>> listMap = new ArrayList<Map<String, Object>>();
public Map<String, Object> getMap() {
map.put("name", "張三");
map.put("age", "18");
return map;
}
public List<String> getList() {
list.add("a");
list.add("b");
return list;
}
public List<Map<String, Object>> getListMap() {
listMap.add(getMap());
return listMap;
}
}
public static void test() throws IOException {
//jsonStr-->>jsonObj
String json1 = "{\"studentName\":\"lily\",\"studentAge\":12}";
JsonObject jsonObject = (JsonObject) parser.parse(json1);
JsonElement parse = parser.parse(json1);
JsonObject asJsonObject = parse.getAsJsonObject();
//jsonStr-->>jsonArray
String json2 = "[{\"studentName\":\"lily\",\"studentAge\":12},{\"studentName\":\"lucy\",\"studentAge\":15}]";
JsonArray jsonArray = (JsonArray) parser.parse(json1);
JsonElement parse1 = parser.parse(json1);
JsonArray asJsonArray = parse1.getAsJsonArray();
//jsonStr-->>javaObj
Student student = new Gson().fromJson(json1, Student.class);
HashMap<String, Student> studentHashMap = gson.fromJson(json1, new TypeToken<HashMap<String, Student>>() {
}.getType());
//javaObj-->>jsonStr
String json = gson.toJson(student);
}
public static void main(String[] args) throws IOException {
GsonTestCase.test();
}
}
perfect!!!
相關推薦
常見的三種json操作工具(jackson,gson,fastjson)
一 jackson Jackson有1.x系列和2.x系列,2.x系列有3個jar包需要下載: jackson-core-2.2.3.jar(核心jar包) jackson-annotations-2.2.3.jar(該包提供Json註解支援) jackson-datab
常用有三種json解析jackson、fastjson、gson。
http ann -- https 解析 enc clas rep depend jackson依賴包 <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson
[轉] 各種Json解析工具比較 - json-lib/Jackson/Gson/FastJson
config 1.2 content pretty 接口實現 turn sso processor true JSON技術的調研報告一 、各個JSON技術的簡介和優劣1.json-libjson-lib最開始的也是應用最廣泛的json解析工具,json-lib 不好的地方確
記錄,js中將字串轉化成json物件的常見三種方法
js中將字串轉化成json物件的常見三種方法: var data='[{"name":"xiao","age":12},{"name":"xiao","age":12}]'; //方式一 var json1 = JSON.parse(data); dy(":"+json1[
C#學習筆記(12)——三種方法操作XML
結點 記得 ext 應用程序 eval 資源 特性 pla cells 說明(2017-7-11 16:56:13): 原文地址: C#中常用的幾種讀取XML文件的方法 XML文件是一種常用的文件格式,例如WinForm裏面的app.config以及Web程序中的web.c
數據庫--MyBatis的(insert,update,delete)三種批量操作
tno open let 項目 sep arraylist htm 子句 由於 轉自:http://blog.csdn.net/starywx/article/details/23268465 前段時間由於項目趕期沒顧上開發過程中的性能問題,現對部分代碼進行優化的過程中發
Java之JSON操作(Jackson)
單個 string not chan writev except java對象 tom ora Java to JSON: 1 package json.jackson; 2 3 import bean.User; 4 import com.fasterxml.
常見三種存儲方式DAS、NAS、SAN的架構及比較
DAS NAS SAN存儲的分類 根據服務器類型分為: 封閉系統的存儲(封閉系統主要指大型機) 開放系統的存儲(開放系統指基於window Unix Linux等操作系統的服務器) 開放系統的存儲分為:內置存儲和外掛存儲 外掛存儲根據連接方式分為:直連式存儲(DAS)和網絡化存儲(FAS);網絡化存儲根
夏天必備!筆記本常見三種降溫方法
不下來 優化 image block alt ima 效果 臺式機 筆記本電腦 由於筆記本“便攜性”和“高性能”的特點,筆記本的內部空間越來越小,但硬盤、CPU和其他的組件在運行過程中產生大量的熱量。筆記本CPU運行頻率越高,它產生的熱量就越多。即便筆記本內置了風扇和散
SpringBoot中預設json轉換工具Jackson
Spring Boot 內建了jackson來完成JSON的序列化和反序列化操作。Jackson使用ObjectMapper類將POJO物件序列化成JSON字串,也能將JSON字串反序列化成POJO物件。 JackSon支援三種層次的序列化和反序列化方式: 採用JsonParser來解
java常用工具類(三)—— Excel 操作工具
import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io
Java中的三種移位操作
考慮下面程式的輸出: public class Main { static public void main(String args[]) throws Exception { System.out.println( 0xff >>> 7 )
常見三種字元編碼的區別:ASCII、Unicode、UTF-8
什麼是字元編碼? 計算機只能處理數字,如果要處理文字,就必須先把文字轉換為數字才能處理。最早的計算機在設計時採用8個位元(bit)作為一個位元組(byte),所以,一個位元組能表示的最大的整數就是255(二進位制11111111=十進位制255),如果要表示更
Typescript常見三種函式型別
Typescript有常見三種函式型別: 分別是普通的函式; 有可選引數的函式; 有剩餘引數的函式; 普通函式 function findMan(age:number):string{ return 'find the '+ age + 'yea
python列表三種刪除操作
列表元素的刪除 del刪除 刪除列表指定位置的元素,實際上是陣列的拷貝 >>> a [0, 1, 15, 2, 3, 4, 5] >>> del a[2] >>> a [0, 1, 2, 3, 4, 5]
SoapUI、Jmeter、Postman三種介面測試工具的比較分析
前段時間忙於介面測試,也看了幾款介面測試工具,簡單從幾個角度做了個比較,拿出來與諸位分享一下吧。各位如果要轉載,請一定註明來源,最好在評論中告知博主一聲,感謝。本報告從多個方面對介面測試的三款常用工具進行比較分析,以便於在特定的情況下選擇最合適的工具,或者使用自己編寫的工具。
SoapUI、Jmeter、Postman三種介面測試工具的比較分析——灰藍
前段時間忙於介面測試,也看了幾款介面測試工具,簡單從幾個角度做了個比較,拿出來與諸位分享一下吧。各位如果要轉載,請一定註明來源,最好在評論中告知博主一聲,感謝。本報告從多個方面對介面測試的三款常用工具進行比較分析,以便於在特定的情況下選擇最合適的工具,或者使用自己編寫的工
json物件和java物件的相互轉換方法(json-lib、jackson、fastjson、gson)
一 使用json-lib包下的JSONObject和JSONArray轉換 程式碼如下: package com.test.test; import java.util.ArrayList; import java.util.List; import com.cn.e
mongoDB 常見三種異常解析 (附配置)
配置 mongoDB配置 <mongo:mongo-client id="mongoClient" host="${mongo.host}" port="${mongo.port}" credentials="${mongo.user}:${mon
Android 常見三種彈框 在專案中的運用
一丶概述 彈框在Android專案中經常出現,常見的實現方法有三種:Dialog 彈框,Window彈框,Activity偽彈框。本文就說一說三種彈框的實現及在專案中的運用。 二丶演示圖 圖一為常見的三種彈框(文末上鍊接),圖二為專案中用到的Activi