005_数据绑定
1. Data Binding API用于使用屬性訪問器或使用注解將JSON轉換為POJO(Plain Old Java Object)和從POJO(Plain Old Java Object)轉換JSON。
2. 數據綁定有兩種類型
2.1. 基本數據綁定: 將JSON轉換與Java映射, 集合, 字符串, 數字, 布爾值, 數組和NULL對象之間相互轉換。
2.2. 對象數據綁定: 將JSON轉換與任何JAVA類型之間相互轉換。
3. 基本數據綁定
3.1. 基本數據綁定是指將JSON映射到JAVA核心數據類型和內置集合。Gson提供了各種內置適配器, 可用于序列化/反序列化原始數據類型。
3.2. 新建一個名為GsonDataBinding的Java項目, 同時添加相關jar包。
3.3. 新建BaseDataBinding.java
package com.fj.dbb;import java.lang.reflect.Type; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.HashMap; import java.util.Map; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken;public class BaseDataBinding {public static void main(String args[]) {Integer id = 1111;String name = "張三";boolean isMale = false;Integer[] sanWei = {100,90,85};Collection<String> familyMembers = new ArrayList<String>();familyMembers.add("爸爸");familyMembers.add("媽媽");familyMembers.add("妹妹");Map<String, String> scores = new HashMap<String, String>();scores.put("chinese", "90");scores.put("math", "100");scores.put("english", "90");Gson gson = new Gson();Type collectionType = new TypeToken<Collection<String>>(){}.getType();Type mapType = new TypeToken<Map<String, String>>(){}.getType();// 序列化System.out.print("{"); // String toJson(Object src)將指定的對象序列化為JSON字符串。System.out.print("id:" + gson.toJson(id) + ", ");System.out.print("name:" + gson.toJson(name) + ", ");System.out.print("isMale:" + gson.toJson(isMale) + ", ");System.out.print("sanWei:" + gson.toJson(sanWei) + ", ");System.out.print("familyMembers:" + gson.toJson(familyMembers, collectionType) + ", "); // String toJson(Object src, Type typeOfSrc)將指定的對象按指定類型的適配器將其序列化為JSON字符串。System.out.print("scores:" + gson.toJson(scores, mapType));System.out.println("}");// 反序列化 // T fromJson(String json, Class<T> classOfT)將指定的json字符串反序列化為指定類的對象。id = gson.fromJson("2222", Integer.class);name = gson.fromJson("\"小剛\"", String.class);isMale = gson.fromJson("true", Boolean.class);sanWei = gson.fromJson("[60,130,185]", Integer[].class); // T fromJson(String json, Type typeOfT)將指定的json字符串按指定類型的適配器將其反序列化為對象。familyMembers = gson.fromJson("[\"爸爸\",\"媽媽\",\"哥哥\"]", collectionType);scores = gson.fromJson("{\"chinese\":\"100\",\"english\":\"100\",\"math\":\"100\"}", mapType);System.out.println("id: " + id);System.out.println("name: " + name);System.out.println("isMale: " + isMale);System.out.println("sanWei: " + Arrays.toString(sanWei));System.out.println("familyMembers: " + familyMembers);System.out.println("scores: " + scores);} }3.4. 運行BaseDataBinding.java
4. 對象數據綁定
4.1. 對象數據綁定是指將JSON映射到任何JAVA對象。
4.2. 新建Student.java
package com.fj.dbo;import java.io.Serializable; import java.util.Arrays; import java.util.Collection; import java.util.Map;public class Student implements Serializable {private static final long serialVersionUID = 1L;private Integer id;private String name;private Boolean isMale;private Integer[] sanWei;private Collection<String> familyMembers;private Map<String, String> scores;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Boolean isMale() {return isMale;}public void setMale(Boolean isMale) {this.isMale = isMale;}public Integer[] getSanWei() {return sanWei;}public void setSanWei(Integer[] sanWei) {this.sanWei = sanWei;}public Collection<String> getFamilyMembers() {return familyMembers;}public void setFamilyMembers(Collection<String> familyMembers) {this.familyMembers = familyMembers;}public Map<String, String> getScores() {return scores;}public void setScores(Map<String, String> scores) {this.scores = scores;}@Overridepublic String toString() {return "Student [id=" + id + ", name=" + name + ", isMale=" + isMale + ", sanWei=" + Arrays.toString(sanWei)+ ", familyMembers=" + familyMembers + ", scores=" + scores + "]";} }4.3. 新建ObjectDataBinding.java
package com.fj.dbo;import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.Map; import com.google.gson.Gson; import com.google.gson.GsonBuilder;public class ObjectDataBinding {public static void main(String[] args) {// 創建一個學生對象Student student = new Student();student.setId(1111);student.setName("張三");student.setMale(false);Integer[] sanWei = {100,90,85};student.setSanWei(sanWei);Collection<String> familyMembers = new ArrayList<String>();familyMembers.add("爸爸");familyMembers.add("媽媽");familyMembers.add("妹妹");student.setFamilyMembers(familyMembers);Map<String, String> scores = new HashMap<String, String>();scores.put("chinese", "90");scores.put("math", "100");scores.put("english", "90");student.setScores(scores);// 1. Gson構造器GsonBuilder builder = new GsonBuilder();// 2. 格式良好的輸出builder.setPrettyPrinting();// 3. 創建Gson對象Gson gson = builder.create();// 4. JavaBean轉化為JSON字符串String jsonString = gson.toJson(student);System.out.println(jsonString);// 5. JSON字符串轉化為JavaBeanstudent = gson.fromJson(jsonString, Student.class);System.out.println(student);} }4.4. 運行ObjectDataBinding.java
總結
- 上一篇: 004_Gson树模型
- 下一篇: 006_Gson定制型适配器