1. 程式人生 > >Insurance 項目——與移動端交互json-Gson

Insurance 項目——與移動端交互json-Gson

on() ont 字節 int version trim test 字節長度 get

這是一個java初學者在獨立開發一個項目時做的筆記,很多內容僅僅是為了解決當前需求,並未很深入的研究。


什麽是Json。

Json是開發領域數據傳遞的一種。有著數據結構簡單,數據字節長度短等優勢。

http://www.json.org.cn/

這裏主要是用來和移動端做交互,使用了google的Gson。

1、pom

技術分享
1  <!-- Gson -->
2     <dependency>
3         <groupId>com.google.code.gson</groupId>
4         <artifactId>gson</artifactId>
5
<version>2.3</version> 6 </dependency>
pom.xml

2、序列化

   序列化是將對象狀態轉換為可保持或傳輸的格式的過程。在這裏就是將對象轉換成為json。

實體類:

技術分享
 1 public class User {
 2     private Integer id;
 3 
 4     private String userName;
 5 
 6     private String password;
 7 
 8     private Integer age;
 9 
10     public
Integer getId() { 11 return id; 12 } 13 14 public void setId(Integer id) { 15 this.id = id; 16 } 17 18 public String getUserName() { 19 return userName; 20 } 21 22 public void setUserName(String userName) { 23 this.userName = userName == null
? null : userName.trim(); 24 } 25 26 public String getPassword() { 27 return password; 28 } 29 30 public void setPassword(String password) { 31 this.password = password == null ? null : password.trim(); 32 } 33 34 public Integer getAge() { 35 return age; 36 } 37 38 public void setAge(Integer age) { 39 this.age = age; 40 } 41 }
User

測試類:

技術分享
 1    @Test
 2     public void test(){
 3         Gson g = new Gson();
 4         User u = new User();
 5         u.setAge(10);
 6         u.setId(5);
 7         u.setPassword("password");
 8         u.setUserName("username");
 9         String ugson = g.toJson(u);
10         System.out.println(ugson);
11     }
Test

打印結果:{"id":5,"userName":"username","password":"password","age":10}

3、反序列化

  反序列化就是將json轉換成為對象。

沿用User實體類。

Json:{"id":10,"userName":"jack","password":"jack","age":15}

測試類:

技術分享
1  @Test
2     public void test(){
3         String Ujson = "{\"id\":10,\"userName\":\"jack\",\"password\":\"jack\",\"age\":15}";
4         Gson g = new Gson();
5         User u = g.fromJson(Ujson, User.class);
6         System.out.println("id:"+u.getId()+",age:"+u.getAge()+",username:"+u.getUserName()+",password:"+u.getPassword());
7     }
Test

打印結果:id:10,age:15,username:jack,password:jack

[email protected]

  在實體類中,[email protected]() .excludeFieldsWithoutExposeAnnotation() .create();序列化時,不會對未註解的屬性進行序列化。

實體類:

技術分享
 1 public class User {
 2     private Integer id;
 3     @Expose
 4     private String userName;
 5 
 6     private String password;
 7     @Expose
 8     private Integer age;
 9 
10     public Integer getId() {
11         return id;
12     }
13 
14     public void setId(Integer id) {
15         this.id = id;
16     }
17 
18     public String getUserName() {
19         return userName;
20     }
21 
22     public void setUserName(String userName) {
23         this.userName = userName == null ? null : userName.trim();
24     }
25 
26     public String getPassword() {
27         return password;
28     }
29 
30     public void setPassword(String password) {
31         this.password = password == null ? null : password.trim();
32     }
33 
34     public Integer getAge() {
35         return age;
36     }
37 
38     public void setAge(Integer age) {
39         this.age = age;
40     }
41 }
User

測試類:

技術分享
 1  @Test
 2     public void test(){
 3         Gson g = new Gson();
 4         Gson g1 = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
 5         User u = new User();
 6         u.setAge(10);
 7         u.setId(5);
 8         u.setPassword("password");
 9         u.setUserName("username");
10         String ugson = g.toJson(u);
11         String u1gson = g1.toJson(u);
12         System.out.println("g:"+ugson);
13         System.out.println("g1:"+u1gson);
14     }
Test

打印結果:

g:{"id":5,"userName":"username","password":"password","age":10}
g1:{"userName":"username","age":10}

[email protected]

  用來定義屬性序列化後的名字。

實體類:

技術分享
 1 public class User {
 2     private Integer id;
 3     @Expose
 4     @SerializedName("name")
 5     private String userName;
 6     @Expose
 7     @SerializedName("pass_word")
 8     private String password;
 9     @Expose
10     private Integer age;
11 
12     public Integer getId() {
13         return id;
14     }
15 
16     public void setId(Integer id) {
17         this.id = id;
18     }
19 
20     public String getUserName() {
21         return userName;
22     }
23 
24     public void setUserName(String userName) {
25         this.userName = userName == null ? null : userName.trim();
26     }
27 
28     public String getPassword() {
29         return password;
30     }
31 
32     public void setPassword(String password) {
33         this.password = password == null ? null : password.trim();
34     }
35 
36     public Integer getAge() {
37         return age;
38     }
39 
40     public void setAge(Integer age) {
41         this.age = age;
42     }
43 }
User

測試類:

技術分享
 1     @Test
 2     public void test(){
 3         Gson g = new Gson();
 4         Gson g1 = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
 5         User u = new User();
 6         u.setAge(10);
 7         u.setId(5);
 8         u.setPassword("password");
 9         u.setUserName("username");
10         String ugson = g.toJson(u);
11         String u1gson = g1.toJson(u);
12         System.out.println("g:"+ugson);
13         System.out.println("g1:"+u1gson);
14     }
Test

打印結果:

g:{"id":5,"name":"username","pass_word":"password","age":10}
g1:{"name":"username","pass_word":"password","age":10}

[email protected],@SerializedName 反序列化

實體類:

技術分享
 1 public class User {
 2     private Integer id;
 3     @Expose
 4     @SerializedName("name")
 5     private String userName;
 6     @Expose
 7     @SerializedName("pass_word")
 8     private String password;
 9     @Expose
10     private Integer age;
11 
12     public Integer getId() {
13         return id;
14     }
15 
16     public void setId(Integer id) {
17         this.id = id;
18     }
19 
20     public String getUserName() {
21         return userName;
22     }
23 
24     public void setUserName(String userName) {
25         this.userName = userName == null ? null : userName.trim();
26     }
27 
28     public String getPassword() {
29         return password;
30     }
31 
32     public void setPassword(String password) {
33         this.password = password == null ? null : password.trim();
34     }
35 
36     public Integer getAge() {
37         return age;
38     }
39 
40     public void setAge(Integer age) {
41         this.age = age;
42     }
43 }
User

測試類:

技術分享
 1  @Test
 2     public void test(){
 3         Gson g = new Gson();
 4         Gson g1 = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
 5         String Ujson = "{\"id\":10,\"userName\":\"jack\",\"password\":\"jack\",\"age\":15}";
 6         String U1json = "{\"id\":10,\"name\":\"jack\",\"pass_word\":\"jack\",\"age\":15}";
 7         User gUser = g.fromJson(Ujson, User.class);
 8         User g1User = g1.fromJson(Ujson, User.class);
 9         User gU1ser = g.fromJson(U1json, User.class);
10         User g1U1ser = g1.fromJson(U1json, User.class);
11         System.out.println("gUser:{id:"+gUser.getId()+",age:"+gUser.getAge()+",username:"+gUser.getUserName()+",password:"+gUser.getPassword()+"}");
12         System.out.println("g1User:{id:"+g1User.getId()+",age:"+g1User.getAge()+",username:"+g1User.getUserName()+",password:"+g1User.getPassword()+"}");
13         System.out.println("gU1ser:{id:"+gU1ser.getId()+",age:"+gU1ser.getAge()+",username:"+gU1ser.getUserName()+",password:"+gU1ser.getPassword()+"}");
14         System.out.println("g1U1ser:{id:"+g1U1ser.getId()+",age:"+g1U1ser.getAge()+",username:"+g1U1ser.getUserName()+",password:"+g1U1ser.getPassword()+"}");
15     }
Test

打印結果:

gUser:{id:10,age:15,username:null,password:null}
g1User:{id:null,age:15,username:null,password:null}
gU1ser:{id:10,age:15,username:jack,password:jack}
g1U1ser:{id:null,age:15,username:jack,password:jack}

[email protected] 註解來定義屬性名,必須使用。

@Expose可以選擇使用New Gson()不用;

Insurance 項目——與移動端交互json-Gson