<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
    很詳細

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


    網站導航:
     
    主站蜘蛛池模板: 国产资源免费观看| 日本免费一区尤物| 亚洲A∨无码一区二区三区| 羞羞漫画页面免费入口欢迎你| 男女啪啪永久免费观看网站| 国产 亚洲 中文在线 字幕| 成年人免费网站在线观看| 亚洲中文无码永久免费| 日本高清免费不卡在线| 无忧传媒视频免费观看入口| 亚洲人成影院在线无码观看| 中文字幕免费播放| 亚洲第一AV网站| aⅴ免费在线观看| 亚洲欧洲专线一区| 免费在线观看你懂的| 国产一级在线免费观看| 亚洲一级二级三级不卡| 久久久久久国产精品免费免费| 亚洲国产av玩弄放荡人妇| 亚洲天堂免费在线视频| 日本人成在线视频免费播放| 亚洲av无码电影网| 四虎国产精品免费久久影院| 国产一级黄片儿免费看| 亚洲女人初试黑人巨高清| 免费视频淫片aa毛片| 久久成人永久免费播放| 亚洲欧洲综合在线| 国产免费午夜a无码v视频| 免费无码H肉动漫在线观看麻豆| 久久久久亚洲AV无码观看| 日韩免费观看视频| 国产偷伦视频免费观看| 亚洲视频无码高清在线| 亚洲综合熟女久久久30p| 天天影院成人免费观看| 一本到卡二卡三卡免费高 | 99久久国产精品免费一区二区| 亚洲精品电影天堂网| www.亚洲色图.com|