<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 110, comments - 101, trackbacks - 0, articles - 7
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    google-gson-2.1-release.zip

    -----------------------------------------------------------------

    掃盲:

    Json是一種類似于XML的通用數據交換格式,具有比XML更高的傳輸效率.

     

    從結構上看,所有的數據(data)最終都可以分解成三種類型:

    第一種類型是標量(scalar),也就是一個單獨的字符串(string)或數字(numbers),比如"北京"這個單獨的詞。

    第二種類型是序列(sequence),也就是若干個相關的數據按照一定順序并列在一起,又叫做數組(array)或列表(List),比如"北京,上海"。

    第三種類型是映射(mapping),也就是一個名/值對(Name/value),即數據有一個名稱,還有一個與之相對應的值,這又稱作散列(hash)或字典(dictionary),比如"首都:北京"。

     

    Json的規格非常簡單,只用一個頁面幾百個字就能說清楚,而且Douglas Crockford聲稱這個規格永遠不必升級,因為該規定的都規定了。

    1) 并列的數據之間用逗號(",")分隔。

    2) 映射用冒號(":")表示。

    3) 并列數據的集合(數組)用方括號("[]")表示。

    4) 映射的集合(對象)用大括號("{}")表示。

    -----------------------------------------------------------------

    最快速入門貼:

    1. 對象的序列化和反序列化

     

    Type listType = new TypeToken<List<String>>() {}.getType();
    List<String> target = new LinkedList<String>(); 

    target.add("blah");

     Gson gson = new Gson(); 

    String json = gson.toJson(target, listType); 

    List<String> target2 = gson.fromJson(json, listType);

     OK,最簡方案打完收工.
    2.使用GsonBuilder.
    GsonBuilder用來生成Gson對象. 規定Gson的序列化和返序列化時的格式等內容.
    如:

    Gson gson = new GsonBuilder()
    .registerTypeAdapter(Id.class, new IdTypeAdapter())  

            .enableComplexMapKeySerialization() 

         .serializeNulls()  

             .setDateFormat(DateFormat.LONG)  

            .setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE)//會把字段首字母大寫

           .setPrettyPrinting() 

         .setVersion(1.0)  

             .create();

    3. 使用注解,定制序列化字段.
    默認情況下@Expose注解是不起作用的,除非你用GsonBuilder創建Gson的時候調用了GsonBuilder.excludeFieldsWithoutExposeAnnotation()方法

     

     

    來個例子:

     

    public class User { 

    @Expose private String firstName; 

     @Expose(serialize = false) private String lastName;

     @Expose (serialize = false, deserialize = false) 

    private String emailAddress; private String password;

     }

    如果你創建Gson對象的時候使用的是new Gson(),toJson()和fromJson()方法將會對全部的字段生效.但是如果你使用的是GsonBuilder并且調用了excludeFieldsWithoutExposeAnnotation()方法.那么:toJson()和fromJson()將不會包括password.因為password沒有包含@Expose注解.
    序列化的時候將不包括 lastName和emailAddress,因為注解中標明不進行序列化.同樣的道理,反序列化時將不包括emailAddress.
    注:如果僅僅是想把某些特定的字段包含在外和話,可以使用transient 關鍵字聲明字段.
    4. 使用注解對序列化名稱進行聲明
    這個簡單,上例子都能懂,不解釋:

    public class SomeClassWithFields {

    @SerializedName("name")
    private final String someField;  

      private final String someOtherField;  

    public SomeClassWithFields(String a, String b) {  

    this.someField = a;
    this.someOtherField = b; 

    }

    ===== OUTPUT =====

    {"name":"a","someOtherField":"b"}

    5. 例用注解,根據版本進行序列化
    有的字段不是一開始就有的,會隨著版本的升級添加進來,那么在進行序列化和返序列化的時候就會根據版本號來選擇是否要序列化.
    @Since(版本號)能完美地實現這個功能.
    當然,GsonBuilder.setVersion(double)方法需要調用.
    例程如下:

    public class User {  

    private String firstName;  

    private String lastName;  

    @Since(1.0) private String emailAddress;  

    @Since(1.0) private String password;

    @Since(1.1) private Address address;

    }

    還的字段可能,隨著版本的升級而刪除,那么
    @Until(版本號)也能實現這個功能,GsonBuilder.setVersion(double)方法需要調用.

    public class User {  

        private String firstName;  

        private String lastName; 

    @Until(1.1) private String emailAddress;  

    @Until(1.1) private String password;

    }


    maven pom.xml 設置
      <dependency>
       <groupId>com.google.code.gson</groupId>
       <artifactId>gson</artifactId>
       <version>2.1</version>
      </dependency>









    評論

    # re: google-gson 序列化Object to json ,GsonBuilder設置 如version意義,注解 等  回復  更多評論   

    2012-10-30 16:23 by cailiang
    很詳細

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲国产精品免费观看| 亚洲国产一级在线观看| 免费观看亚洲人成网站| 亚洲自偷自偷偷色无码中文| 69视频在线观看免费| 亚洲综合小说另类图片动图| 亚洲毛片av日韩av无码| 18以下岁毛片在免费播放| 久久精品国产亚洲AV未满十八| 亚洲一区精品无码| 精品免费久久久久久久| 一级成人生活片免费看| 亚洲午夜电影在线观看高清| 亚洲毛片av日韩av无码| 亚洲大片免费观看| 精品久久久久久亚洲中文字幕| 亚洲视频在线播放| 亚洲国产精品无码久久青草| 无码区日韩特区永久免费系列| 国产免费区在线观看十分钟 | 亚洲伊人久久大香线蕉苏妲己| 成人免费午间影院在线观看| 最好免费观看高清在线| 亚洲七久久之综合七久久| 亚洲av无码无在线观看红杏| 国产免费观看a大片的网站| 59pao成国产成视频永久免费 | 亚洲精品GV天堂无码男同| 久久精品亚洲综合| 亚洲国产精品毛片av不卡在线| 亚洲三级在线免费观看| 中国在线观看免费的www| 小说区亚洲自拍另类| 亚洲国产日韩精品| 4480yy私人影院亚洲| 亚洲伊人久久成综合人影院| 日本不卡视频免费| 日韩精品福利片午夜免费观着 | 永久在线免费观看| 精品国产污污免费网站入口在线| 亚洲AV日韩AV无码污污网站|