JSON解析器之Gson、FastJson、Jackson
Java物件與JSON相互轉換
JSON解析器:
常見的解析器:Jsonlib,Gson,fastjson,jackson
1.Gson解析器(谷歌)
最好使用最新jar包(百度搜尋Gson然後去GitHub上找,或者Maven上也有)
1. JSON轉為Java物件
- 1.引入JAR包
- 2.在需要轉換Java物件的位置, 編寫如下程式碼:
- 物件 = new Gson().fromJson(JSON字串,物件型別.class);
建立一個Student類:
public class Student {
private int id;
private String name;
private int age;
public Student(int id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
例項:
public static void main(String[] args) {
//1. 建立Gson物件
Gson g = new Gson();
//2. 轉換
String str = "{\"id\":1,\"name\":\"馬保國\",\"age\":56}\n";
Student student = g.fromJson(str, Student.class);
System.out.println(student);
System.out.println("---------------------------");
//3.集合轉換
String str2 = "{\"id\":1,\"name\":\"馬保國\",\"age\":56,\"page\":[\"hello\",\"java\",\"hahaha\"]}\n";
HashMap data = g.fromJson(str2, HashMap.class);
List page = (List) data.get("page");//JSON中的陣列轉出來是ArrayList
System.out.println(page.get(1));
}
執行結果:
Student{id=1, name='馬保國', age=56}
----------------------------------
java
2.Java物件轉換JSON
-
1.引入JAR包
-
2.在需要轉換JSON字串的位置編寫如下程式碼即可:
- String json = new Gson().toJSON(要轉換的物件);
例項:
public static void main(String[] args) {
//1. 建立Gson物件
Gson g = new Gson();
//2. 轉換
Student student1 = new Student(1,"馬保國",56);
String str = g.toJson(student1);
System.out.println(str);
System.out.println("--------------------------------------------");
//3. 多個物件轉換
Student student2 = new Student(2,"盧本偉",28);
Student student3 = new Student(3,"蔡徐坤",15);
ArrayList<Student> students = new ArrayList<>();
students.add(student1);
students.add(student2);
students.add(student3);
String str2 = g.toJson(students);
System.out.println(str2);
}
執行結果:
{"id":1,"name":"馬保國","age":56}
--------------------------------------------
[{"id":1,"name":"馬保國","age":56},{"id":2,"name":"盧本偉","age":28},{"id":3,"name":"蔡徐坤","age":15}]
2. FastJson解析器(阿里)
最好使用最新jar包(百度搜尋Gson然後去GitHub上找,或者Maven上也有)
1. JSON轉為Java物件
- 1.引入JAR包
- 2.在需要轉換Java物件的位置, 編寫如下程式碼:
- 型別 物件名=JSON.parseObject(JSON字串, 型別.class);
- 或List<型別> list=JSON.parseArray(JSON字串,型別.class);
例項:
public class Demo4 {
public static void main(String[] args) {
String str = "{\"id\":1,\"name\":\"馬保國\",\"age\":56}";
Student student = JSON.parseObject(str, Student.class);
System.out.println(student);
}
}
執行截圖:
Student{id=1, name='馬保國', age=56}
2.Java物件轉換JSON
- 引入JAR包
- 在需要轉換JSON字串的位置編寫如下程式碼即可:
- String json=JSON.toJSONString(要轉換的物件);
例項:
public static void main(String[] args) {
Student student1 = new Student(1,"馬保國",56);
String str = JSON.toJSONString(student1);
System.out.println(str.length());
}
執行截圖:
{"id":1,"name":"馬保國","age":56}
注意:
FastJson是靠物件屬性的get、Set方法生成josn檔案的,沒有get、set方法無法生成
3. JackSon解析器
最好使用最新jar包(百度搜尋Gson然後去GitHub上找,或者Maven上也有)
1. JSON轉為Java物件
-
1.匯入jackson的相關jar包
-
2.建立Jackson核心物件 ObjectMapper
-
3.呼叫ObjectMapper的相關方法進行轉換
- readValue(json字串資料,Class)
2. Java物件轉換JSON
使用步驟:
- readValue(json字串資料,Class)
-
1.匯入jackson的相關jar包
-
2.建立Jackson核心物件 ObjectMapper
-
3.呼叫ObjectMapper的相關方法進行轉換
-
- 轉換方法:
writeValue(引數1,obj):
引數1:
File:將obj物件轉換為JSON字串,並儲存到指定的檔案中
Writer:將obj物件轉換為JSON字串,並將json資料填充到字元輸出流中
OutputStream:將obj物件轉換為JSON字串,並將json資料填充到位元組輸出流中
writeValueAsString(obj):將物件轉為json字串
- 轉換方法:
-
- 註解:
- @JsonIgnore:排除屬性。
- @JsonFormat:屬性值得格式化
@JsonFormat(pattern = “yyyy-MM-dd”)
- 註解:
-
- 複雜java物件轉換
- List:陣列
- Map:物件格式一致
- 複雜java物件轉換
-
相關文章
- SpringBoot中,使用 fastjson代替jacksonSpring BootASTJSON
- 11 種序列化庫對比 DSL、fastjson、gson、jackson、protocol buffer、Thrift、Hession、Kryo、Fst、Messagepack、Jboss MarshalingASTJSONProtocol
- 淺談Gson和fastjson使用中的坑ASTJSON
- Json工具類----JacksonJSON
- android使用Gson來解析jsonAndroidJSON
- fastjson: json物件,json物件陣列,javabean物件,json字串之間的相互轉化ASTJSON物件陣列JavaBean字串
- JSON學習--com.alibaba.fastjson.JSONJSONAST
- Eclipse安裝GSON,使用GSON轉換Java Object到JSONEclipseJavaObjectJSON
- 除了FastJson,你還有選擇: Gson簡易指南ASTJSON
- Android:用GSON 五招之內搞定任何JSON陣列AndroidJSON陣列
- 手寫javascript json解析器JavaScriptJSON
- Jackson 解析json資料之忽略解析欄位註解@JsonIgnorePropertiesJSON
- jackson、fastjson、kryo、protostuff等序列化工具效能對比ASTJSON
- fastjson:物件轉化成json出現$refASTJSON物件
- fastjson字串轉JSON的$ref問題ASTJSON字串
- 除了FastJson,你也應該瞭解一下Jackson(二)ASTJSON
- 除了FastJson,你也應該瞭解一下Jackson(一)ASTJSON
- 手寫Json解析器學習心得JSON
- 終極CRUD-3-用Jackson解析jsonJSON
- 一文搞定Jackson解析JSON資料JSON
- 網路元件 基於Retrofit2+RxJava2+GSON/Fastjson的網路框架元件RxJavaASTJSON框架
- 【淺度渣文】Jackson之jackson-annotations
- 【淺度渣文】Jackson之jackson-databind
- alibaba/fastjson 之 JSONPathASTJSON
- Json和Map互轉,三個包(org.json/net.sf.json/com.google.gson)JSONGo
- Java中使用Fastjson將JSON檔案轉物件JavaASTJSON物件
- FastJSON解析Json字串(反序列化為List、Map)ASTJSON字串
- fastjson判斷JSON字串是Object還是List<Object>ASTJSON字串Object
- java安全之fastjson鏈分析JavaASTJSON
- 從json-lib轉成jackson的遇到的問題JSON
- 1. 初識Jackson -- 世界上最好的JSON庫JSON
- Java安全之Fastjson內網利用JavaASTJSON內網
- Java安全之FastJson JdbcRowSetImpl 鏈分析JavaASTJSONJDBC
- 基於Spring Security Role過濾Jackson JSON輸出內容SpringJSON
- 2. 媽呀,Jackson原來是這樣寫JSON的JSON
- Jackson(3)之常用註解使用
- 自己動手寫json解析器0x01-分詞JSON分詞
- 幾百行程式碼實現一個 JSON 解析器行程JSON