Gson復(fù)雜對(duì)象自定義序列化類

  • 實(shí)體類
package com.xqxf.dto;

import com.xqxf.domain.User;

/**
 * Package com.xqxf.dto
 *
 * author liyaocai
 *
 * date 2017/10/7 20:24
 *
 * Description:
 *
 * version V1.0
 */

public class UserDto {
private String uId;
private User user;

  public UserDto() {
  }

  public String getuId() {
    return uId;
  }

  public void setuId(String uId) {
    this.uId = uId;
  }

  public User getUser() {
    return user;
  }

  public void setUser(User user) {
    this.user = user;
  }
}

自定義序列化類繼承JsonDeserializer

  • UserDeserializer類
package com.xqxf.utils.Json;

import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParseException;
import com.xqxf.domain.User;
import com.xqxf.dto.UserDto;
import java.lang.reflect.Type;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * Package com.xqxf.utils
 *
 * author liyaocai
 *
 * date 2017/10/7 19:49
 *
 * Description:
 *
 * version V1.0
 */

public class UserDeserializer  implements JsonDeserializer<UserDto>{
Logger logger= LoggerFactory.getLogger(UserDeserializer.class);
  public UserDeserializer() {
  }

  @Override
  public UserDto deserialize(JsonElement jsonElement, Type type,
      JsonDeserializationContext jsonDeserializationContext) throws JsonParseException {
    JsonObject jsonObject=jsonElement.getAsJsonObject();
    User user=new User();

    UserDto userDto=new UserDto();
    user.setNickName(jsonObject.get("info").getAsJsonObject().get("nickName").getAsString());
//    user.setPermission(jsonObject.get("info").getAsJsonObject().get("permission").getAsString());
//  user.setUserName(jsonObject.get("info").getAsJsonObject().get("userName").getAsString());
    user.setAddress(jsonObject.get("info").getAsJsonObject().get("address").getAsString());
    user.setCompany(jsonObject.get("info").getAsJsonObject().get("company").getAsString());
    user.setDepartment(jsonObject.get("info").getAsJsonObject().get("department").getAsString());
    user.setPhone(jsonObject.get("info").getAsJsonObject().get("phone").getAsString());
    user.setTel(jsonObject.get("info").getAsJsonObject().get("tel").getAsString());
    userDto.setuId(jsonObject.get("uId").getAsString());

    userDto.setUser(user);
    return userDto;
  }


}

  • 使用建造者模式構(gòu)件gson實(shí)例
 Gson gson = new GsonBuilder()//建造者模式設(shè)置不同的配置
      .serializeNulls()//序列化為null對(duì)象
      .setDateFormat("yyyy-MM-dd HH:mm:ss") //設(shè)置日期的格式
      .disableHtmlEscaping()//防止對(duì)網(wǎng)址亂碼 忽略對(duì)特殊字符的轉(zhuǎn)換
      .excludeFieldsWithoutExposeAnnotation()
//      使用自定義適配器
      .registerTypeAdapterFactory(new NullStringToEmptyAdapterFactory())
      .registerTypeAdapter(UserDto.class,new UserDeserializer())
      .registerTypeAdapter(WorkOrderDto.class,new WorkOrderDeserializer())
      .create();

關(guān)于JsonDeserializer的介紹請(qǐng)查看http://www.importnew.com/16786.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末脉顿,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子潦刃,更是在濱河造成了極大的恐慌淤井,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,978評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件恨溜,死亡現(xiàn)場(chǎng)離奇詭異汽久,居然都是意外死亡指郁,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門迫肖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來锅劝,“玉大人,你說我怎么就攤上這事蟆湖」示簦” “怎么了?”我有些...
    開封第一講書人閱讀 156,623評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵隅津,是天一觀的道長诬垂。 經(jīng)常有香客問我,道長伦仍,這世上最難降的妖魔是什么结窘? 我笑而不...
    開封第一講書人閱讀 56,324評(píng)論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮充蓝,結(jié)果婚禮上隧枫,老公的妹妹穿的比我還像新娘。我一直安慰自己棺克,他們只是感情好悠垛,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評(píng)論 5 384
  • 文/花漫 我一把揭開白布线定。 她就那樣靜靜地躺著娜谊,像睡著了一般。 火紅的嫁衣襯著肌膚如雪斤讥。 梳的紋絲不亂的頭發(fā)上纱皆,一...
    開封第一講書人閱讀 49,741評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音芭商,去河邊找鬼派草。 笑死,一個(gè)胖子當(dāng)著我的面吹牛铛楣,可吹牛的內(nèi)容都是我干的近迁。 我是一名探鬼主播,決...
    沈念sama閱讀 38,892評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼簸州,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼鉴竭!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起岸浑,我...
    開封第一講書人閱讀 37,655評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤搏存,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后矢洲,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體璧眠,經(jīng)...
    沈念sama閱讀 44,104評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了责静。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片袁滥。...
    茶點(diǎn)故事閱讀 38,569評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖灾螃,靈堂內(nèi)的尸體忽然破棺而出呻拌,到底是詐尸還是另有隱情,我是刑警寧澤睦焕,帶...
    沈念sama閱讀 34,254評(píng)論 4 328
  • 正文 年R本政府宣布藐握,位于F島的核電站,受9級(jí)特大地震影響垃喊,放射性物質(zhì)發(fā)生泄漏猾普。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評(píng)論 3 312
  • 文/蒙蒙 一本谜、第九天 我趴在偏房一處隱蔽的房頂上張望初家。 院中可真熱鬧,春花似錦乌助、人聲如沸溜在。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽掖肋。三九已至,卻和暖如春赏参,著一層夾襖步出監(jiān)牢的瞬間志笼,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評(píng)論 1 264
  • 我被黑心中介騙來泰國打工把篓, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留纫溃,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,260評(píng)論 2 360
  • 正文 我出身青樓韧掩,卻偏偏與公主長得像紊浩,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子疗锐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,734評(píng)論 25 707
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法坊谁,類相關(guān)的語法,內(nèi)部類的語法窒悔,繼承相關(guān)的語法呜袁,異常的語法,線程的語...
    子非魚_t_閱讀 31,597評(píng)論 18 399
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理简珠,服務(wù)發(fā)現(xiàn)阶界,斷路器虹钮,智...
    卡卡羅2017閱讀 134,628評(píng)論 18 139
  • 1.概述2.Gson的目標(biāo)3.Gson的性能和擴(kuò)展性4.Gson的使用者5.如何使用Gson 通過Maven來使用...
    人失格閱讀 14,220評(píng)論 2 18
  • 關(guān)于孩子上不上興趣班的問題已經(jīng)是個(gè)老生常談的話題了,近日朋友圈又出現(xiàn)了知乎上所謂北大虎媽的一張時(shí)間表膘融,引發(fā)了有關(guān)興...
    lily漂流在海上閱讀 443評(píng)論 2 3