Gson 복합 객체 사용자 정의 시리얼화 클래스

3149 단어
  • 솔리드 클래스
  • 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;
      }
    }
    
    

    사용자 정의 시리얼화된 클래스 상속 Json Deserializer
  • 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{
    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;
      }
    
    
    }
    
    
  • 건설자 모드 구성 요소 gson 실례 사용
  •  Gson gson = new GsonBuilder()// 
          .serializeNulls()// null 
          .setDateFormat("yyyy-MM-dd HH:mm:ss") // 
          .disableHtmlEscaping()//   
          .excludeFieldsWithoutExposeAnnotation()
    //       
          .registerTypeAdapterFactory(new NullStringToEmptyAdapterFactory())
          .registerTypeAdapter(UserDto.class,new UserDeserializer())
          .registerTypeAdapter(WorkOrderDto.class,new WorkOrderDeserializer())
          .create();
    

    Json Deserializer에 대한 설명은http://www.importnew.com/16786.html

    좋은 웹페이지 즐겨찾기