<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # Gson – `GsonBuilder`配置示例 > 原文: [https://howtodoinjava.com/gson/gson-gsonbuilder-configuration/](https://howtodoinjava.com/gson/gson-gsonbuilder-configuration/) 對于簡單的用例,使用`Gson gson = new Gson();`及其標準配置就足夠了。 但是,如果您打算自定義 [Gson](https://howtodoinjava.com/library/google-gson-tutorial/) 的行為,則可以使用 `GsonBuilder`通過自定義配置創建新的 Gson 實例。 [`GsonBuilder`](https://static.javadoc.io/com.google.code.gson/gson/2.8.5/com/google/gson/GsonBuilder.html)類提供`.create()`方法,該方法返回`Gson`實例。 ```java Gson gson = new GsonBuilder().create(); ``` ## 1\. `GsonBuilder.setPrettyPrinting()` – 精美打印 JSON 默認情況下,Gson 將創建縮小的 JSON 字符串。 這對于減少通過網絡傳輸的數據量非常重要。 但是,這種縮小的 JSON 對開發人員進行開發/調試應用時無濟于事。 使用精美打印來格式化 JSON 輸出。 ```java Gson gson = new GsonBuilder() .setPrettyPrinting() .create(); ``` ## 2\. `FieldNamingPolicy` [`FieldNamingPolicy`](https://static.javadoc.io/com.google.code.gson/gson/2.8.5/com/google/gson/FieldNamingPolicy.html) 枚舉在序列化期間為 JSON 字段名稱提供了幾種標準命名約定。 它有助于`Gson`實例將 Java 字段名稱正確轉換為所需的 JSON 字段名稱。 *注意:請注意,以下任何命名約定均不會影響用`@SerializedName`注解的字段。* 以下命名選項可用。 我們將驗證使用`User`類的每個策略生成的名稱。 為了示例目的,我們以不同的模式添加了字段名稱,以便我們可以了解每種命名策略如何在不同策略下轉換不同的名稱。 ```java public class User { private long id; private String first_Name; private String lastName; private String _email; } ``` ```java User user = new User(1, "Lokesh", "Gupta", "admin@howtodoinjava.com"); Gson gson = new GsonBuilder() .setFieldNamingPolicy(FieldNamingPolicy.IDENTITY) .setPrettyPrinting().create(); System.out.println(gson.toJson(user)); ``` #### 2.1 `FieldNamingPolicy.IDENTITY` 與 Gson 一起使用此命名策略將確保字段名稱不變。 這是默認行為。 ```java { "id": 1, "first_Name": "Lokesh", "lastName": "Gupta", "_email": "admin@howtodoinjava.com" } ``` #### 2.2 `FieldNamingPolicy.LOWER_CASE_WITH_DASHES` Gson 會將 Java 字段名稱從其駝峰大小寫形式修改為小寫的字段名稱,其中每個單詞都用破折號(`-`)分隔。 ```java { "id": 1, "first_-name": "Lokesh", "last-name": "Gupta", "_email": "admin@howtodoinjava.com" } ``` #### 2.3 `FieldNamingPolicy.LOWER_CASE_WITH_DOTS` Gson 會將 Java 字段名稱從其駝峰大小寫形式修改為小寫的字段名稱,其中每個單詞都用點(`.`)分隔。 ```java { "id": 1, "first_.name": "Lokesh", "last.name": "Gupta", "_email": "admin@howtodoinjava.com" } ``` #### 2.4 `FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES` Gson 會將 Java 字段名稱從其駝峰大小寫形式修改為小寫的字段名稱,其中每個單詞都用下劃線(`_`)分隔。 ```java { "id": 1, "first__name": "Lokesh", "last_name": "Gupta", "_email": "admin@howtodoinjava.com" } ``` #### 2.5 `FieldNamingPolicy.UPPER_CAMEL_CASE` Gson 將確保序列化為 JSON 格式的 Java 字段名稱的第一個“字母”大寫。 ```java { "Id": 1, "First_Name": "Lokesh", "LastName": "Gupta", "_Email": "admin@howtodoinjava.com" } ``` #### 2.6 `FieldNamingPolicy.UPPER_CAMEL_CASE_WITH_SPACES` Gson 將確保在將 Java 字段名稱的第一個“字母”序列化為 JSON 格式時將其大寫,并且單詞之間將使用空格分隔。 ```java { "Id": 1, "First_ Name": "Lokesh", "Last Name": "Gupta", "_Email": "admin@howtodoinjava.com" } ``` ## 3\. `GsonBuilder.serializeNulls()` – 空值的序列化 默認情況下,Gson 在序列化過程中會忽略`null`屬性。 但是,有時我們想序列化具有空值的字段,以便它必須出現在 JSON 中。 為此,請使用`serializeNulls()`方法。 ```java Employee employeeObj = new Employee(1, "Lokesh", "Gupta", null); Gson gson = new GsonBuilder() .serializeNulls() .setPrettyPrinting().create(); System.out.println(gson.toJson(employeeObj)); ``` 程序輸出。 ```java { "id": 1, "firstName": "Lokesh", "lastName": "Gupta", "emailId": null } ``` ## 4\. `GsonBuilder.setExclusionStrategies()` [**`ExclusionStrategy`**](https://static.javadoc.io/com.google.code.gson/gson/2.8.2/com/google/gson/ExclusionStrategy.html)用于確定是否應序列化或反序列化字段或頂級類作為 JSON 輸出/輸入的一部分。 對于序列化,如果`shouldSkipClass(Class)`方法返回`true`,則該類或字段類型將不屬于 JSON 輸出。 對于反序列化,如果`shouldSkipClass(Class)`返回`true`,則不會將其設置為 Java 對象結構的一部分。 相同的規則應用于`shouldSkipField(attribute)`方法。 在下面的示例中,將從序列化和反序列化中排除帶有`@NPI`注解和所有`Account`類實例的 Gson 成員字段。 ```java Gson gson = new GsonBuilder() .setExclusionStrategies(new ExclusionStrategy() { @Override public boolean shouldSkipField(FieldAttributes f) { return f.getAnnotation(NPI.class) != null; } @Override public boolean shouldSkipClass(Class<?> clazz) { return clazz.getAnnotation(Account.class) != null; } }) .setPrettyPrinting() .create(); ``` ## 5\. `GsonBuilder.setLenient()` – 寬松的 JSON 語法規則 在反序列化期間,Gson 使用了一個不太寬大的`JsonReader`類。 這意味著它僅接受兼容的 JSON 輸入。 如果 JSON 違反結構規則之一,它將拋出`MalformedJsonException`。 如果我們將`lenient`設置為`true`,它將吞噬某些違規行為,并嘗試最好甚至讀取格式較差的 JSON。 ```java Gson gson = new GsonBuilder() .setLenient() .setPrettyPrinting().create(); ``` 這些是一些最常用的`GsonBuilder`配置方法及其用法。 將您的問題留在我的評論中。 學習愉快!
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看