国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

香港云服务器
服務器之家 - 編程語言 - JAVA教程 - 舉例講解Java的JSON類庫GSON的基本用法

舉例講解Java的JSON類庫GSON的基本用法

2020-05-20 11:47云棲社區 JAVA教程

GSON是谷歌在GitHub上開源的Java的JSON格式轉換類庫,能夠實現Java對象向JSON的序列和反序列,這里我們就來舉例講解Java的JSON類庫GSON的基本用法:

GSON這個Java類庫可以把Java對象轉換成JSON,也可以把JSON字符串轉換成一個相等的Java對象。Gson支持任意復雜Java對象包括沒有源代碼的對象。
其他的json解析庫還有json-lib;Jackson;com.alibaba.fastjson
小編還是喜歡Google的Gson。

一、使用場景:
java對象和json字符串的相互轉換;日志輸出。
例如:

?
1
2
3
Logger logger = Logger.getLogger(CommonAction.class);
Gson g = new Gson();
logger.info(“return:”+g.toJson(map));

二、用法舉例:
1.基礎用法toJson

toJason()方法將對象轉換成Json字符串

?
1
2
3
Gson gson = new Gson();
List persons = new ArrayList();
String str = gson.toJson(persons);

2.基礎用法:fromJson()
Gson提供了fromJson()方法來實現從Json字符串轉化為到java實體的方法。
比如json字符串為:

?
1
[{“name”:”name0”,”age”:0}]

則:

?
1
Person person = gson.fromJson(str, Person.class);

提供兩個參數,分別是json字符串以及需要轉換對象的類型。
3.避免Unicode轉義
例如: {"s":"\u003c"} 我只想簡單的打印成這樣 {"s":"<"} 解決方案: 我只需要 disable HTML escaping. Gson gson = new

?
1
GsonBuilder().disableHtmlEscaping().create();

4.排除某些字段
如果一個類A中含有字段field1,它的父類也含有字段field1,那么A對象toJson的時候,就會發生declares multiple JSON fields named field1。 解決方案1:在類A中去掉字段filed1. 解決方案2:使用Json的@Expose注解 將A類MessageText中需要打印的字段filed1加上注解@Expose 。那么父類中沒有加注解的field1就會被排除掉。

?
1
Gson g = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();

5.換屬性名字


三、使用示例:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
import java.lang.reflect.Type;
import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
 
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonParseException;
import com.google.gson.JsonPrimitive;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
import com.google.gson.reflect.TypeToken;
 
 
public class GSonDemo {
 public static void main(String[] args) {
// Gson gson = new Gson();
 //設置將類型的屬性進行格式轉換
 Gson gson = new GsonBuilder().registerTypeAdapter(Timestamp.class, new TimestampTypeAdapter()).setDateFormat("yyyy-MM-dd HH:mm:ss").create();
 List<Person> persons = new ArrayList<Person>();
 for (int i = 0; i < 10; i++) {
    Person p = new Person();
    p.setName("name" + i);
    p.setAge(i * 5);
    p.setInsertTime(new Timestamp(System.currentTimeMillis()));
    persons.add(p);
 }
 String str = gson.toJson(persons);
 System.out.println(str);
 
 List<Person> ps = gson.fromJson(str, new TypeToken<List<Person>>(){}.getType());
 for(int i = 0; i < ps.size() ; i++)
 {
    Person p = ps.get(i);
    System.out.println(p.toString());
 }
 
 System.out.println(new Timestamp(System.currentTimeMillis()));
 }
}
 
class Person {
 private String name;
 private int age;
 private Timestamp insertTime;
 
 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 Timestamp getInsertTime() {
 return insertTime;
 }
 
 public void setInsertTime(Timestamp insertTime) {
 this.insertTime = insertTime;
 }
 
 @Override
 public String toString() {
 return name + "\t" + age + "\t" + insertTime;
 }
}
 
//實現序列化,反序列化接口
class TimestampTypeAdapter implements JsonSerializer<Timestamp>, JsonDeserializer<Timestamp> {
  public JsonElement serialize(Timestamp src, Type arg1, JsonSerializationContext arg2) {
    DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS");
    String dateFormatAsString = format.format(new Date(src.getTime()));
    return new JsonPrimitive(dateFormatAsString);
  }
 
  public Timestamp deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
    if (!(json instanceof JsonPrimitive)) {
      throw new JsonParseException("The date should be a string value");
    }
 
    try {
      DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS");
      Date date = (Date) format.parse(json.getAsString());
      return new Timestamp(date.getTime());
    } catch (Exception e) {
      throw new JsonParseException(e);
    }
  }
 
}

延伸 · 閱讀

精彩推薦
422
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 黄色电影在线免费观看 | 色在线视频 | 久久国产综合 | 亚洲免费精品 | 国产久 | 中文字幕一区二区三区乱码在线 | 黄色毛片视频网站 | 成人午夜在线 | 伊人久久国产 | 999精品视频 | 日韩精品在线免费视频 | 卡通动漫第一页 | 国产精品久久久久久 | 国产激情久久久久久 | 亚洲综合精品久久 | 欧美亚洲国产一区二区三区 | 亚洲不卡视频 | 久久久久亚洲精品 | 日韩三级观看 | 99热最新 | 国产精品成人av | 日韩免费一区 | 国产美女福利在线 | 99在线播放| 精品久久久久久久 | 欧美一区二区在线播放 | 日韩午夜电影 | 欧美污污 | 99精品视频免费观看 | 午夜精品视频在线观看 | 亚洲夜幕久久日韩精品一区 | 亚洲高清免费视频 | 亚洲男人的天堂网站 | 国产精品亲子伦av一区二区三区 | 在线免费视频一区二区 | 成人精品视频在线 | 美女久久久 | 特级毛片在线大全免费播放 | a∨色狠狠一区二区三区 | 成人资源在线观看 | 亚洲毛片 |