GsonBuilder匯出null值、格式化輸出、日期時間

韓師學子--胖佳發表於2019-03-01

          GsonBuilder匯出null值、格式化輸出、日期時間


轉載: http://www.jianshu.com/p/c88260adaf5e
一般情況下Gson類提供的 API已經能滿足大部分的使用場景,但我們需要更多更特殊、更強大的功能時,這時候就引入一個新的類 GsonBuilder。
GsonBuilder從名上也能知道是用於構建Gson例項的一個類,要想改變Gson預設的設定必須使用該類配置Gson。
GsonBuilder用法

Gson gson = new GsonBuilder()
               //各種配置
               .create(); //生成配置好的Gson

Gson在預設情況下是不動匯出值null的鍵的,如:
 

public class User {
    //省略其它
    public String name;
    public int age;
    public String email;
}
Gson gson = new Gson();
User user = new User("怪盜kidou",24);
System.out.println(gson.toJson(user)); //{"name":"怪盜kidou","age":24}

可以看出,email欄位是沒有在json中出現的,當我們在除錯是、需要匯出完整的json串時或API接中要求沒有值必須用Null時,就會比較有用。
使用方法:

Gson gson = new GsonBuilder()
        .serializeNulls()
        .create();
User user = new User("怪盜kidou", 24);
System.out.println(gson.toJson(user)); //{"name":"怪盜kidou","age":24,"email":null}

格式化輸出、日期時間及其它:
這些都比較簡單就不一一分開寫了。

Gson gson = new GsonBuilder()
        //序列化null
        .serializeNulls()
        // 設定日期時間格式,另有2個過載方法
        // 在序列化和反序化時均生效
        .setDateFormat("yyyy-MM-dd")
        // 禁此序列化內部類
        .disableInnerClassSerialization()
        //生成不可執行的Json(多了 )]}' 這4個字元)
        .generateNonExecutableJson()
        //禁止轉義html標籤
        .disableHtmlEscaping()
        //格式化輸出
        .setPrettyPrinting()
        .create();


注意:內部類(Inner Class)和巢狀類(Nested Class)的區別
 

相關文章