content: /*
   * 支付宝开放平台API
   * 支付宝开放平台v3协议文档
   *
   * The version of the OpenAPI document: 2025-08-26
   * 
   *
   * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
   * https://openapi-generator.tech
   * Do not edit the class manually.
   */
  
  
  package com.alipay.v3.model;
  
  import java.util.Objects;
  import java.util.Arrays;
  import com.alipay.v3.model.DeliverAddress;
  import com.google.gson.TypeAdapter;
  import com.google.gson.annotations.JsonAdapter;
  import com.google.gson.annotations.SerializedName;
  import com.google.gson.stream.JsonReader;
  import com.google.gson.stream.JsonWriter;
  import io.swagger.annotations.ApiModel;
  import io.swagger.annotations.ApiModelProperty;
  import java.io.IOException;
  import java.util.ArrayList;
  import java.util.List;
  
  import com.google.gson.Gson;
  import com.google.gson.GsonBuilder;
  import com.google.gson.JsonArray;
  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.google.gson.TypeAdapterFactory;
  import com.google.gson.reflect.TypeToken;
  
  import java.lang.reflect.Type;
  import java.util.HashMap;
  import java.util.HashSet;
  import java.util.Map;
  import java.util.Map.Entry;
  import java.util.Set;
  
  import com.alipay.v3.JSON;
  
  /**
   * AlipayUserUserinfoShareResponseModel
   */
  @javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen")
  public class AlipayUserUserinfoShareResponseModel {
    public static final String SERIALIZED_NAME_ADDRESS = "address";
    @SerializedName(SERIALIZED_NAME_ADDRESS)
    private String address;
  
    public static final String SERIALIZED_NAME_ADDRESS_CODE = "address_code";
    @SerializedName(SERIALIZED_NAME_ADDRESS_CODE)
    private String addressCode;
  
    public static final String SERIALIZED_NAME_ALIPAY_USER_ID = "alipay_user_id";
    @SerializedName(SERIALIZED_NAME_ALIPAY_USER_ID)
    private String alipayUserId;
  
    public static final String SERIALIZED_NAME_AREA = "area";
    @SerializedName(SERIALIZED_NAME_AREA)
    private String area;
  
    public static final String SERIALIZED_NAME_AVATAR = "avatar";
    @SerializedName(SERIALIZED_NAME_AVATAR)
    private String avatar;
  
    public static final String SERIALIZED_NAME_BALANCE_FREEZE_TYPE = "balance_freeze_type";
    @SerializedName(SERIALIZED_NAME_BALANCE_FREEZE_TYPE)
    private String balanceFreezeType;
  
    public static final String SERIALIZED_NAME_BIRTHDAY = "birthday";
    @SerializedName(SERIALIZED_NAME_BIRTHDAY)
    private String birthday;
  
    public static final String SERIALIZED_NAME_CERT_NO = "cert_no";
    @SerializedName(SERIALIZED_NAME_CERT_NO)
    private String certNo;
  
    public static final String SERIALIZED_NAME_CERT_TYPE_VALUE = "cert_type_value";
    @SerializedName(SERIALIZED_NAME_CERT_TYPE_VALUE)
    private String certTypeValue;
  
    public static final String SERIALIZED_NAME_CITY = "city";
    @SerializedName(SERIALIZED_NAME_CITY)
    private String city;
  
    public static final String SERIALIZED_NAME_DEFAULT_DELIVER_ADDRESS = "default_deliver_address";
    @SerializedName(SERIALIZED_NAME_DEFAULT_DELIVER_ADDRESS)
    private String defaultDeliverAddress;
  
    public static final String SERIALIZED_NAME_DELIVER_ADDRESS_LIST = "deliver_address_list";
    @SerializedName(SERIALIZED_NAME_DELIVER_ADDRESS_LIST)
    private List<DeliverAddress> deliverAddressList = null;
  
    public static final String SERIALIZED_NAME_DELIVER_AREA = "deliver_area";
    @SerializedName(SERIALIZED_NAME_DELIVER_AREA)
    private String deliverArea;
  
    public static final String SERIALIZED_NAME_DELIVER_CITY = "deliver_city";
    @SerializedName(SERIALIZED_NAME_DELIVER_CITY)
    private String deliverCity;
  
    public static final String SERIALIZED_NAME_DELIVER_FULLNAME = "deliver_fullname";
    @SerializedName(SERIALIZED_NAME_DELIVER_FULLNAME)
    private String deliverFullname;
  
    public static final String SERIALIZED_NAME_DELIVER_MOBILE = "deliver_mobile";
    @SerializedName(SERIALIZED_NAME_DELIVER_MOBILE)
    private String deliverMobile;
  
    public static final String SERIALIZED_NAME_DELIVER_PHONE = "deliver_phone";
    @SerializedName(SERIALIZED_NAME_DELIVER_PHONE)
    private String deliverPhone;
  
    public static final String SERIALIZED_NAME_DELIVER_PROVINCE = "deliver_province";
    @SerializedName(SERIALIZED_NAME_DELIVER_PROVINCE)
    private String deliverProvince;
  
    public static final String SERIALIZED_NAME_EMAIL = "email";
    @SerializedName(SERIALIZED_NAME_EMAIL)
    private String email;
  
    public static final String SERIALIZED_NAME_FAMILY_NAME = "family_name";
    @SerializedName(SERIALIZED_NAME_FAMILY_NAME)
    private String familyName;
  
    public static final String SERIALIZED_NAME_FIRM_NAME = "firm_name";
    @SerializedName(SERIALIZED_NAME_FIRM_NAME)
    private String firmName;
  
    public static final String SERIALIZED_NAME_GENDER = "gender";
    @SerializedName(SERIALIZED_NAME_GENDER)
    private String gender;
  
    public static final String SERIALIZED_NAME_IS_BALANCE_FROZEN = "is_balance_frozen";
    @SerializedName(SERIALIZED_NAME_IS_BALANCE_FROZEN)
    private String isBalanceFrozen;
  
    public static final String SERIALIZED_NAME_IS_BANK_AUTH = "is_bank_auth";
    @SerializedName(SERIALIZED_NAME_IS_BANK_AUTH)
    private String isBankAuth;
  
    public static final String SERIALIZED_NAME_IS_CERTIFIED = "is_certified";
    @SerializedName(SERIALIZED_NAME_IS_CERTIFIED)
    private String isCertified;
  
    public static final String SERIALIZED_NAME_IS_CERTIFY_GRADE_A = "is_certify_grade_a";
    @SerializedName(SERIALIZED_NAME_IS_CERTIFY_GRADE_A)
    private String isCertifyGradeA;
  
    public static final String SERIALIZED_NAME_IS_ID_AUTH = "is_id_auth";
    @SerializedName(SERIALIZED_NAME_IS_ID_AUTH)
    private String isIdAuth;
  
    public static final String SERIALIZED_NAME_IS_LICENCE_AUTH = "is_licence_auth";
    @SerializedName(SERIALIZED_NAME_IS_LICENCE_AUTH)
    private String isLicenceAuth;
  
    public static final String SERIALIZED_NAME_IS_MOBILE_AUTH = "is_mobile_auth";
    @SerializedName(SERIALIZED_NAME_IS_MOBILE_AUTH)
    private String isMobileAuth;
  
    public static final String SERIALIZED_NAME_IS_STUDENT_CERTIFIED = "is_student_certified";
    @SerializedName(SERIALIZED_NAME_IS_STUDENT_CERTIFIED)
    private String isStudentCertified;
  
    public static final String SERIALIZED_NAME_MOBILE = "mobile";
    @SerializedName(SERIALIZED_NAME_MOBILE)
    private String mobile;
  
    public static final String SERIALIZED_NAME_NICK_NAME = "nick_name";
    @SerializedName(SERIALIZED_NAME_NICK_NAME)
    private String nickName;
  
    public static final String SERIALIZED_NAME_PHONE = "phone";
    @SerializedName(SERIALIZED_NAME_PHONE)
    private String phone;
  
    public static final String SERIALIZED_NAME_PROVINCE = "province";
    @SerializedName(SERIALIZED_NAME_PROVINCE)
    private String province;
  
    public static final String SERIALIZED_NAME_REAL_NAME = "real_name";
    @SerializedName(SERIALIZED_NAME_REAL_NAME)
    private String realName;
  
    public static final String SERIALIZED_NAME_REDUCED_BIRTHDAY = "reduced_birthday";
    @SerializedName(SERIALIZED_NAME_REDUCED_BIRTHDAY)
    private String reducedBirthday;
  
    public static final String SERIALIZED_NAME_USER_ID = "user_id";
    @SerializedName(SERIALIZED_NAME_USER_ID)
    private String userId;
  
    public static final String SERIALIZED_NAME_USER_STATUS = "user_status";
    @SerializedName(SERIALIZED_NAME_USER_STATUS)
    private String userStatus;
  
    public static final String SERIALIZED_NAME_USER_TYPE_VALUE = "user_type_value";
    @SerializedName(SERIALIZED_NAME_USER_TYPE_VALUE)
    private String userTypeValue;
  
    public static final String SERIALIZED_NAME_ZIP = "zip";
    @SerializedName(SERIALIZED_NAME_ZIP)
    private String zip;
  
    public AlipayUserUserinfoShareResponseModel() { 
    }
  
    public AlipayUserUserinfoShareResponseModel address(String address) {
      
      this.address = address;
      return this;
    }
  
     /**
     * 详细地址。
     * @return address
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "西湖区文三路国际大厦", value = "详细地址。")
  
    public String getAddress() {
      return address;
    }
  
  
    public void setAddress(String address) {
      this.address = address;
    }
  
  
    public AlipayUserUserinfoShareResponseModel addressCode(String addressCode) {
      
      this.addressCode = addressCode;
      return this;
    }
  
     /**
     * 区域编码，暂时不返回值
     * @return addressCode
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "330106", value = "区域编码，暂时不返回值")
  
    public String getAddressCode() {
      return addressCode;
    }
  
  
    public void setAddressCode(String addressCode) {
      this.addressCode = addressCode;
    }
  
  
    public AlipayUserUserinfoShareResponseModel alipayUserId(String alipayUserId) {
      
      this.alipayUserId = alipayUserId;
      return this;
    }
  
     /**
     * 支付宝用户ID
     * @return alipayUserId
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "2088156897126906", value = "支付宝用户ID")
  
    public String getAlipayUserId() {
      return alipayUserId;
    }
  
  
    public void setAlipayUserId(String alipayUserId) {
      this.alipayUserId = alipayUserId;
    }
  
  
    public AlipayUserUserinfoShareResponseModel area(String area) {
      
      this.area = area;
      return this;
    }
  
     /**
     * 区县名称。
     * @return area
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "西湖区", value = "区县名称。")
  
    public String getArea() {
      return area;
    }
  
  
    public void setArea(String area) {
      this.area = area;
    }
  
  
    public AlipayUserUserinfoShareResponseModel avatar(String avatar) {
      
      this.avatar = avatar;
      return this;
    }
  
     /**
     * 用户头像
     * @return avatar
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "http://tfsimg.alipay.com/images/partner/T1uIxXXbpXXXXXXXX", value = "用户头像")
  
    public String getAvatar() {
      return avatar;
    }
  
  
    public void setAvatar(String avatar) {
      this.avatar = avatar;
    }
  
  
    public AlipayUserUserinfoShareResponseModel balanceFreezeType(String balanceFreezeType) {
      
      this.balanceFreezeType = balanceFreezeType;
      return this;
    }
  
     /**
     * 【注意】当is_balance_frozen为“F”时，改字段不会返回.  CTU ---- CTU冻结，允许用户开启  ALIBABA ---- ALIBABA冻结，允许用户开启  SERVER ---- 后台冻结，允许用户开启  USER ----  用户冻结   CTU_N---- CTU冻结，不允许用户开启  ALIBABA_N ---- ALIBABA冻结，不允许用户开启  SERVER_N ---- 后台冻结，不允许用户开启  UNKNOWN ---- 降级、或查询超时
     * @return balanceFreezeType
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "SERVER", value = "【注意】当is_balance_frozen为“F”时，改字段不会返回.  CTU ---- CTU冻结，允许用户开启  ALIBABA ---- ALIBABA冻结，允许用户开启  SERVER ---- 后台冻结，允许用户开启  USER ----  用户冻结   CTU_N---- CTU冻结，不允许用户开启  ALIBABA_N ---- ALIBABA冻结，不允许用户开启  SERVER_N ---- 后台冻结，不允许用户开启  UNKNOWN ---- 降级、或查询超时")
  
    public String getBalanceFreezeType() {
      return balanceFreezeType;
    }
  
  
    public void setBalanceFreezeType(String balanceFreezeType) {
      this.balanceFreezeType = balanceFreezeType;
    }
  
  
    public AlipayUserUserinfoShareResponseModel birthday(String birthday) {
      
      this.birthday = birthday;
      return this;
    }
  
     /**
     * 用户生日
     * @return birthday
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "19900918", value = "用户生日")
  
    public String getBirthday() {
      return birthday;
    }
  
  
    public void setBirthday(String birthday) {
      this.birthday = birthday;
    }
  
  
    public AlipayUserUserinfoShareResponseModel certNo(String certNo) {
      
      this.certNo = certNo;
      return this;
    }
  
     /**
     * 证件号码
     * @return certNo
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "340928109890871722", value = "证件号码")
  
    public String getCertNo() {
      return certNo;
    }
  
  
    public void setCertNo(String certNo) {
      this.certNo = certNo;
    }
  
  
    public AlipayUserUserinfoShareResponseModel certTypeValue(String certTypeValue) {
      
      this.certTypeValue = certTypeValue;
      return this;
    }
  
     /**
     * 0:身份证  1:护照  2:军官证  3:士兵证  4:回乡证  5:临时身份证  6:户口簿  7:警官证  8:台胞证  9:营业执照  10其它证件
     * @return certTypeValue
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "7", value = "0:身份证  1:护照  2:军官证  3:士兵证  4:回乡证  5:临时身份证  6:户口簿  7:警官证  8:台胞证  9:营业执照  10其它证件")
  
    public String getCertTypeValue() {
      return certTypeValue;
    }
  
  
    public void setCertTypeValue(String certTypeValue) {
      this.certTypeValue = certTypeValue;
    }
  
  
    public AlipayUserUserinfoShareResponseModel city(String city) {
      
      this.city = city;
      return this;
    }
  
     /**
     * 市名称。
     * @return city
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "安庆", value = "市名称。")
  
    public String getCity() {
      return city;
    }
  
  
    public void setCity(String city) {
      this.city = city;
    }
  
  
    public AlipayUserUserinfoShareResponseModel defaultDeliverAddress(String defaultDeliverAddress) {
      
      this.defaultDeliverAddress = defaultDeliverAddress;
      return this;
    }
  
     /**
     * 是否默认收货地址，暂时不返回值
     * @return defaultDeliverAddress
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "T", value = "是否默认收货地址，暂时不返回值")
  
    public String getDefaultDeliverAddress() {
      return defaultDeliverAddress;
    }
  
  
    public void setDefaultDeliverAddress(String defaultDeliverAddress) {
      this.defaultDeliverAddress = defaultDeliverAddress;
    }
  
  
    public AlipayUserUserinfoShareResponseModel deliverAddressList(List<DeliverAddress> deliverAddressList) {
      
      this.deliverAddressList = deliverAddressList;
      return this;
    }
  
    public AlipayUserUserinfoShareResponseModel addDeliverAddressListItem(DeliverAddress deliverAddressListItem) {
      if (this.deliverAddressList == null) {
        this.deliverAddressList = new ArrayList<>();
      }
      this.deliverAddressList.add(deliverAddressListItem);
      return this;
    }
  
     /**
     * 收货人地址列表
     * @return deliverAddressList
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(value = "收货人地址列表")
  
    public List<DeliverAddress> getDeliverAddressList() {
      return deliverAddressList;
    }
  
  
    public void setDeliverAddressList(List<DeliverAddress> deliverAddressList) {
      this.deliverAddressList = deliverAddressList;
    }
  
  
    public AlipayUserUserinfoShareResponseModel deliverArea(String deliverArea) {
      
      this.deliverArea = deliverArea;
      return this;
    }
  
     /**
     * 收货人所在区县
     * @return deliverArea
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "西湖区", value = "收货人所在区县")
  
    public String getDeliverArea() {
      return deliverArea;
    }
  
  
    public void setDeliverArea(String deliverArea) {
      this.deliverArea = deliverArea;
    }
  
  
    public AlipayUserUserinfoShareResponseModel deliverCity(String deliverCity) {
      
      this.deliverCity = deliverCity;
      return this;
    }
  
     /**
     * 收货人所在城市
     * @return deliverCity
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "杭州市", value = "收货人所在城市")
  
    public String getDeliverCity() {
      return deliverCity;
    }
  
  
    public void setDeliverCity(String deliverCity) {
      this.deliverCity = deliverCity;
    }
  
  
    public AlipayUserUserinfoShareResponseModel deliverFullname(String deliverFullname) {
      
      this.deliverFullname = deliverFullname;
      return this;
    }
  
     /**
     * 收货人全称
     * @return deliverFullname
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "张三", value = "收货人全称")
  
    public String getDeliverFullname() {
      return deliverFullname;
    }
  
  
    public void setDeliverFullname(String deliverFullname) {
      this.deliverFullname = deliverFullname;
    }
  
  
    public AlipayUserUserinfoShareResponseModel deliverMobile(String deliverMobile) {
      
      this.deliverMobile = deliverMobile;
      return this;
    }
  
     /**
     * 收货地址的联系人移动电话。
     * @return deliverMobile
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "13200909090", value = "收货地址的联系人移动电话。")
  
    public String getDeliverMobile() {
      return deliverMobile;
    }
  
  
    public void setDeliverMobile(String deliverMobile) {
      this.deliverMobile = deliverMobile;
    }
  
  
    public AlipayUserUserinfoShareResponseModel deliverPhone(String deliverPhone) {
      
      this.deliverPhone = deliverPhone;
      return this;
    }
  
     /**
     * 收货地址的联系人固定电话。
     * @return deliverPhone
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "13211111111", value = "收货地址的联系人固定电话。")
  
    public String getDeliverPhone() {
      return deliverPhone;
    }
  
  
    public void setDeliverPhone(String deliverPhone) {
      this.deliverPhone = deliverPhone;
    }
  
  
    public AlipayUserUserinfoShareResponseModel deliverProvince(String deliverProvince) {
      
      this.deliverProvince = deliverProvince;
      return this;
    }
  
     /**
     * 收货人所在省份
     * @return deliverProvince
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "浙江省", value = "收货人所在省份")
  
    public String getDeliverProvince() {
      return deliverProvince;
    }
  
  
    public void setDeliverProvince(String deliverProvince) {
      this.deliverProvince = deliverProvince;
    }
  
  
    public AlipayUserUserinfoShareResponseModel email(String email) {
      
      this.email = email;
      return this;
    }
  
     /**
     * 用户支付宝账号绑定的邮箱地址
     * @return email
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "sss@163.com", value = "用户支付宝账号绑定的邮箱地址")
  
    public String getEmail() {
      return email;
    }
  
  
    public void setEmail(String email) {
      this.email = email;
    }
  
  
    public AlipayUserUserinfoShareResponseModel familyName(String familyName) {
      
      this.familyName = familyName;
      return this;
    }
  
     /**
     * 姓氏，取的是realName中的首个字符，对非中文、中文复姓支持较差。
     * @return familyName
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "赵", value = "姓氏，取的是realName中的首个字符，对非中文、中文复姓支持较差。")
  
    public String getFamilyName() {
      return familyName;
    }
  
  
    public void setFamilyName(String familyName) {
      this.familyName = familyName;
    }
  
  
    public AlipayUserUserinfoShareResponseModel firmName(String firmName) {
      
      this.firmName = firmName;
      return this;
    }
  
     /**
     * 公司名称（用户类型是公司类型时公司名称才有此字段）。
     * @return firmName
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "阿里巴巴", value = "公司名称（用户类型是公司类型时公司名称才有此字段）。")
  
    public String getFirmName() {
      return firmName;
    }
  
  
    public void setFirmName(String firmName) {
      this.firmName = firmName;
    }
  
  
    public AlipayUserUserinfoShareResponseModel gender(String gender) {
      
      this.gender = gender;
      return this;
    }
  
     /**
     * 性别（F：女性；M：男性）
     * @return gender
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "F", value = "性别（F：女性；M：男性）")
  
    public String getGender() {
      return gender;
    }
  
  
    public void setGender(String gender) {
      this.gender = gender;
    }
  
  
    public AlipayUserUserinfoShareResponseModel isBalanceFrozen(String isBalanceFrozen) {
      
      this.isBalanceFrozen = isBalanceFrozen;
      return this;
    }
  
     /**
     * T--被冻结；F--未冻结
     * @return isBalanceFrozen
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "T", value = "T--被冻结；F--未冻结")
  
    public String getIsBalanceFrozen() {
      return isBalanceFrozen;
    }
  
  
    public void setIsBalanceFrozen(String isBalanceFrozen) {
      this.isBalanceFrozen = isBalanceFrozen;
    }
  
  
    public AlipayUserUserinfoShareResponseModel isBankAuth(String isBankAuth) {
      
      this.isBankAuth = isBankAuth;
      return this;
    }
  
     /**
     * T为是银行卡认证，F为非银行卡认证。
     * @return isBankAuth
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "T", value = "T为是银行卡认证，F为非银行卡认证。")
  
    public String getIsBankAuth() {
      return isBankAuth;
    }
  
  
    public void setIsBankAuth(String isBankAuth) {
      this.isBankAuth = isBankAuth;
    }
  
  
    public AlipayUserUserinfoShareResponseModel isCertified(String isCertified) {
      
      this.isCertified = isCertified;
      return this;
    }
  
     /**
     * 是否通过实名认证。T是通过 F是没有实名认证
     * @return isCertified
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "T", value = "是否通过实名认证。T是通过 F是没有实名认证")
  
    public String getIsCertified() {
      return isCertified;
    }
  
  
    public void setIsCertified(String isCertified) {
      this.isCertified = isCertified;
    }
  
  
    public AlipayUserUserinfoShareResponseModel isCertifyGradeA(String isCertifyGradeA) {
      
      this.isCertifyGradeA = isCertifyGradeA;
      return this;
    }
  
     /**
     * T：表示A类实名认证；F：表示非A类实名认证
     * @return isCertifyGradeA
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "T", value = "T：表示A类实名认证；F：表示非A类实名认证")
  
    public String getIsCertifyGradeA() {
      return isCertifyGradeA;
    }
  
  
    public void setIsCertifyGradeA(String isCertifyGradeA) {
      this.isCertifyGradeA = isCertifyGradeA;
    }
  
  
    public AlipayUserUserinfoShareResponseModel isIdAuth(String isIdAuth) {
      
      this.isIdAuth = isIdAuth;
      return this;
    }
  
     /**
     * T为是身份证认证，F为非身份证认证。
     * @return isIdAuth
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "T", value = "T为是身份证认证，F为非身份证认证。")
  
    public String getIsIdAuth() {
      return isIdAuth;
    }
  
  
    public void setIsIdAuth(String isIdAuth) {
      this.isIdAuth = isIdAuth;
    }
  
  
    public AlipayUserUserinfoShareResponseModel isLicenceAuth(String isLicenceAuth) {
      
      this.isLicenceAuth = isLicenceAuth;
      return this;
    }
  
     /**
     * T为通过营业执照认证，F为没有通过
     * @return isLicenceAuth
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "T", value = "T为通过营业执照认证，F为没有通过")
  
    public String getIsLicenceAuth() {
      return isLicenceAuth;
    }
  
  
    public void setIsLicenceAuth(String isLicenceAuth) {
      this.isLicenceAuth = isLicenceAuth;
    }
  
  
    public AlipayUserUserinfoShareResponseModel isMobileAuth(String isMobileAuth) {
      
      this.isMobileAuth = isMobileAuth;
      return this;
    }
  
     /**
     * T为是手机认证，F为非手机认证。
     * @return isMobileAuth
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "T", value = "T为是手机认证，F为非手机认证。")
  
    public String getIsMobileAuth() {
      return isMobileAuth;
    }
  
  
    public void setIsMobileAuth(String isMobileAuth) {
      this.isMobileAuth = isMobileAuth;
    }
  
  
    public AlipayUserUserinfoShareResponseModel isStudentCertified(String isStudentCertified) {
      
      this.isStudentCertified = isStudentCertified;
      return this;
    }
  
     /**
     * 是否是学生
     * @return isStudentCertified
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "T", value = "是否是学生")
  
    public String getIsStudentCertified() {
      return isStudentCertified;
    }
  
  
    public void setIsStudentCertified(String isStudentCertified) {
      this.isStudentCertified = isStudentCertified;
    }
  
  
    public AlipayUserUserinfoShareResponseModel mobile(String mobile) {
      
      this.mobile = mobile;
      return this;
    }
  
     /**
     * 手机号码。
     * @return mobile
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "13429199999", value = "手机号码。")
  
    public String getMobile() {
      return mobile;
    }
  
  
    public void setMobile(String mobile) {
      this.mobile = mobile;
    }
  
  
    public AlipayUserUserinfoShareResponseModel nickName(String nickName) {
      
      this.nickName = nickName;
      return this;
    }
  
     /**
     * 用户昵称
     * @return nickName
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "哈哈就是我", value = "用户昵称")
  
    public String getNickName() {
      return nickName;
    }
  
  
    public void setNickName(String nickName) {
      this.nickName = nickName;
    }
  
  
    public AlipayUserUserinfoShareResponseModel phone(String phone) {
      
      this.phone = phone;
      return this;
    }
  
     /**
     * 电话号码。
     * @return phone
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "0511-26888888", value = "电话号码。")
  
    public String getPhone() {
      return phone;
    }
  
  
    public void setPhone(String phone) {
      this.phone = phone;
    }
  
  
    public AlipayUserUserinfoShareResponseModel province(String province) {
      
      this.province = province;
      return this;
    }
  
     /**
     * 省份名称。
     * @return province
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "安徽省", value = "省份名称。")
  
    public String getProvince() {
      return province;
    }
  
  
    public void setProvince(String province) {
      this.province = province;
    }
  
  
    public AlipayUserUserinfoShareResponseModel realName(String realName) {
      
      this.realName = realName;
      return this;
    }
  
     /**
     * 用户的真实姓名。
     * @return realName
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "张三", value = "用户的真实姓名。")
  
    public String getRealName() {
      return realName;
    }
  
  
    public void setRealName(String realName) {
      this.realName = realName;
    }
  
  
    public AlipayUserUserinfoShareResponseModel reducedBirthday(String reducedBirthday) {
      
      this.reducedBirthday = reducedBirthday;
      return this;
    }
  
     /**
     * 生日的月和日，MMdd格式
     * @return reducedBirthday
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "0428", value = "生日的月和日，MMdd格式")
  
    public String getReducedBirthday() {
      return reducedBirthday;
    }
  
  
    public void setReducedBirthday(String reducedBirthday) {
      this.reducedBirthday = reducedBirthday;
    }
  
  
    public AlipayUserUserinfoShareResponseModel userId(String userId) {
      
      this.userId = userId;
      return this;
    }
  
     /**
     * 用户的userId
     * @return userId
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "2088102104794936", value = "用户的userId")
  
    public String getUserId() {
      return userId;
    }
  
  
    public void setUserId(String userId) {
      this.userId = userId;
    }
  
  
    public AlipayUserUserinfoShareResponseModel userStatus(String userStatus) {
      
      this.userStatus = userStatus;
      return this;
    }
  
     /**
     * 用户状态（Q/T/B/W）。  Q代表快速注册用户  T代表已认证用户  B代表被冻结账户  W代表已注册，未激活的账户
     * @return userStatus
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "T", value = "用户状态（Q/T/B/W）。  Q代表快速注册用户  T代表已认证用户  B代表被冻结账户  W代表已注册，未激活的账户")
  
    public String getUserStatus() {
      return userStatus;
    }
  
  
    public void setUserStatus(String userStatus) {
      this.userStatus = userStatus;
    }
  
  
    public AlipayUserUserinfoShareResponseModel userTypeValue(String userTypeValue) {
      
      this.userTypeValue = userTypeValue;
      return this;
    }
  
     /**
     * 用户类型（1/2）  1代表公司账户2代表个人账户
     * @return userTypeValue
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "1", value = "用户类型（1/2）  1代表公司账户2代表个人账户")
  
    public String getUserTypeValue() {
      return userTypeValue;
    }
  
  
    public void setUserTypeValue(String userTypeValue) {
      this.userTypeValue = userTypeValue;
    }
  
  
    public AlipayUserUserinfoShareResponseModel zip(String zip) {
      
      this.zip = zip;
      return this;
    }
  
     /**
     * 邮政编码。
     * @return zip
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "3600", value = "邮政编码。")
  
    public String getZip() {
      return zip;
    }
  
  
    public void setZip(String zip) {
      this.zip = zip;
    }
  
    /**
     * A container for additional, undeclared properties.
     * This is a holder for any undeclared properties as specified with
     * the 'additionalProperties' keyword in the OAS document.
     */
    private Map<String, Object> additionalProperties;
  
    /**
     * Set the additional (undeclared) property with the specified name and value.
     * If the property does not already exist, create it otherwise replace it.
     *
     * @param key name of the property
     * @param value value of the property
     * @return the AlipayUserUserinfoShareResponseModel instance itself
     */
    public AlipayUserUserinfoShareResponseModel putAdditionalProperty(String key, Object value) {
      if (this.additionalProperties == null) {
          this.additionalProperties = new HashMap<String, Object>();
      }
      this.additionalProperties.put(key, value);
      return this;
    }
  
    /**
     * Return the additional (undeclared) property.
     *
     * @return a map of objects
     */
    public Map<String, Object> getAdditionalProperties() {
      return additionalProperties;
    }
  
    /**
     * Return the additional (undeclared) property with the specified name.
     *
     * @param key name of the property
     * @return an object
     */
    public Object getAdditionalProperty(String key) {
      if (this.additionalProperties == null) {
          return null;
      }
      return this.additionalProperties.get(key);
    }
  
  
    @Override
    public boolean equals(Object o) {
      if (this == o) {
        return true;
      }
      if (o == null || getClass() != o.getClass()) {
        return false;
      }
      AlipayUserUserinfoShareResponseModel alipayUserUserinfoShareResponseModel = (AlipayUserUserinfoShareResponseModel) o;
      return Objects.equals(this.address, alipayUserUserinfoShareResponseModel.address) &&
          Objects.equals(this.addressCode, alipayUserUserinfoShareResponseModel.addressCode) &&
          Objects.equals(this.alipayUserId, alipayUserUserinfoShareResponseModel.alipayUserId) &&
          Objects.equals(this.area, alipayUserUserinfoShareResponseModel.area) &&
          Objects.equals(this.avatar, alipayUserUserinfoShareResponseModel.avatar) &&
          Objects.equals(this.balanceFreezeType, alipayUserUserinfoShareResponseModel.balanceFreezeType) &&
          Objects.equals(this.birthday, alipayUserUserinfoShareResponseModel.birthday) &&
          Objects.equals(this.certNo, alipayUserUserinfoShareResponseModel.certNo) &&
          Objects.equals(this.certTypeValue, alipayUserUserinfoShareResponseModel.certTypeValue) &&
          Objects.equals(this.city, alipayUserUserinfoShareResponseModel.city) &&
          Objects.equals(this.defaultDeliverAddress, alipayUserUserinfoShareResponseModel.defaultDeliverAddress) &&
          Objects.equals(this.deliverAddressList, alipayUserUserinfoShareResponseModel.deliverAddressList) &&
          Objects.equals(this.deliverArea, alipayUserUserinfoShareResponseModel.deliverArea) &&
          Objects.equals(this.deliverCity, alipayUserUserinfoShareResponseModel.deliverCity) &&
          Objects.equals(this.deliverFullname, alipayUserUserinfoShareResponseModel.deliverFullname) &&
          Objects.equals(this.deliverMobile, alipayUserUserinfoShareResponseModel.deliverMobile) &&
          Objects.equals(this.deliverPhone, alipayUserUserinfoShareResponseModel.deliverPhone) &&
          Objects.equals(this.deliverProvince, alipayUserUserinfoShareResponseModel.deliverProvince) &&
          Objects.equals(this.email, alipayUserUserinfoShareResponseModel.email) &&
          Objects.equals(this.familyName, alipayUserUserinfoShareResponseModel.familyName) &&
          Objects.equals(this.firmName, alipayUserUserinfoShareResponseModel.firmName) &&
          Objects.equals(this.gender, alipayUserUserinfoShareResponseModel.gender) &&
          Objects.equals(this.isBalanceFrozen, alipayUserUserinfoShareResponseModel.isBalanceFrozen) &&
          Objects.equals(this.isBankAuth, alipayUserUserinfoShareResponseModel.isBankAuth) &&
          Objects.equals(this.isCertified, alipayUserUserinfoShareResponseModel.isCertified) &&
          Objects.equals(this.isCertifyGradeA, alipayUserUserinfoShareResponseModel.isCertifyGradeA) &&
          Objects.equals(this.isIdAuth, alipayUserUserinfoShareResponseModel.isIdAuth) &&
          Objects.equals(this.isLicenceAuth, alipayUserUserinfoShareResponseModel.isLicenceAuth) &&
          Objects.equals(this.isMobileAuth, alipayUserUserinfoShareResponseModel.isMobileAuth) &&
          Objects.equals(this.isStudentCertified, alipayUserUserinfoShareResponseModel.isStudentCertified) &&
          Objects.equals(this.mobile, alipayUserUserinfoShareResponseModel.mobile) &&
          Objects.equals(this.nickName, alipayUserUserinfoShareResponseModel.nickName) &&
          Objects.equals(this.phone, alipayUserUserinfoShareResponseModel.phone) &&
          Objects.equals(this.province, alipayUserUserinfoShareResponseModel.province) &&
          Objects.equals(this.realName, alipayUserUserinfoShareResponseModel.realName) &&
          Objects.equals(this.reducedBirthday, alipayUserUserinfoShareResponseModel.reducedBirthday) &&
          Objects.equals(this.userId, alipayUserUserinfoShareResponseModel.userId) &&
          Objects.equals(this.userStatus, alipayUserUserinfoShareResponseModel.userStatus) &&
          Objects.equals(this.userTypeValue, alipayUserUserinfoShareResponseModel.userTypeValue) &&
          Objects.equals(this.zip, alipayUserUserinfoShareResponseModel.zip)&&
          Objects.equals(this.additionalProperties, alipayUserUserinfoShareResponseModel.additionalProperties);
    }
  
    @Override
    public int hashCode() {
      return Objects.hash(address, addressCode, alipayUserId, area, avatar, balanceFreezeType, birthday, certNo, certTypeValue, city, defaultDeliverAddress, deliverAddressList, deliverArea, deliverCity, deliverFullname, deliverMobile, deliverPhone, deliverProvince, email, familyName, firmName, gender, isBalanceFrozen, isBankAuth, isCertified, isCertifyGradeA, isIdAuth, isLicenceAuth, isMobileAuth, isStudentCertified, mobile, nickName, phone, province, realName, reducedBirthday, userId, userStatus, userTypeValue, zip, additionalProperties);
    }
  
    @Override
    public String toString() {
      StringBuilder sb = new StringBuilder();
      sb.append("class AlipayUserUserinfoShareResponseModel {\n");
      sb.append("    address: ").append(toIndentedString(address)).append("\n");
      sb.append("    addressCode: ").append(toIndentedString(addressCode)).append("\n");
      sb.append("    alipayUserId: ").append(toIndentedString(alipayUserId)).append("\n");
      sb.append("    area: ").append(toIndentedString(area)).append("\n");
      sb.append("    avatar: ").append(toIndentedString(avatar)).append("\n");
      sb.append("    balanceFreezeType: ").append(toIndentedString(balanceFreezeType)).append("\n");
      sb.append("    birthday: ").append(toIndentedString(birthday)).append("\n");
      sb.append("    certNo: ").append(toIndentedString(certNo)).append("\n");
      sb.append("    certTypeValue: ").append(toIndentedString(certTypeValue)).append("\n");
      sb.append("    city: ").append(toIndentedString(city)).append("\n");
      sb.append("    defaultDeliverAddress: ").append(toIndentedString(defaultDeliverAddress)).append("\n");
      sb.append("    deliverAddressList: ").append(toIndentedString(deliverAddressList)).append("\n");
      sb.append("    deliverArea: ").append(toIndentedString(deliverArea)).append("\n");
      sb.append("    deliverCity: ").append(toIndentedString(deliverCity)).append("\n");
      sb.append("    deliverFullname: ").append(toIndentedString(deliverFullname)).append("\n");
      sb.append("    deliverMobile: ").append(toIndentedString(deliverMobile)).append("\n");
      sb.append("    deliverPhone: ").append(toIndentedString(deliverPhone)).append("\n");
      sb.append("    deliverProvince: ").append(toIndentedString(deliverProvince)).append("\n");
      sb.append("    email: ").append(toIndentedString(email)).append("\n");
      sb.append("    familyName: ").append(toIndentedString(familyName)).append("\n");
      sb.append("    firmName: ").append(toIndentedString(firmName)).append("\n");
      sb.append("    gender: ").append(toIndentedString(gender)).append("\n");
      sb.append("    isBalanceFrozen: ").append(toIndentedString(isBalanceFrozen)).append("\n");
      sb.append("    isBankAuth: ").append(toIndentedString(isBankAuth)).append("\n");
      sb.append("    isCertified: ").append(toIndentedString(isCertified)).append("\n");
      sb.append("    isCertifyGradeA: ").append(toIndentedString(isCertifyGradeA)).append("\n");
      sb.append("    isIdAuth: ").append(toIndentedString(isIdAuth)).append("\n");
      sb.append("    isLicenceAuth: ").append(toIndentedString(isLicenceAuth)).append("\n");
      sb.append("    isMobileAuth: ").append(toIndentedString(isMobileAuth)).append("\n");
      sb.append("    isStudentCertified: ").append(toIndentedString(isStudentCertified)).append("\n");
      sb.append("    mobile: ").append(toIndentedString(mobile)).append("\n");
      sb.append("    nickName: ").append(toIndentedString(nickName)).append("\n");
      sb.append("    phone: ").append(toIndentedString(phone)).append("\n");
      sb.append("    province: ").append(toIndentedString(province)).append("\n");
      sb.append("    realName: ").append(toIndentedString(realName)).append("\n");
      sb.append("    reducedBirthday: ").append(toIndentedString(reducedBirthday)).append("\n");
      sb.append("    userId: ").append(toIndentedString(userId)).append("\n");
      sb.append("    userStatus: ").append(toIndentedString(userStatus)).append("\n");
      sb.append("    userTypeValue: ").append(toIndentedString(userTypeValue)).append("\n");
      sb.append("    zip: ").append(toIndentedString(zip)).append("\n");
      sb.append("    additionalProperties: ").append(toIndentedString(additionalProperties)).append("\n");
      sb.append("}");
      return sb.toString();
    }
  
    /**
     * Convert the given object to string with each line indented by 4 spaces
     * (except the first line).
     */
    private String toIndentedString(Object o) {
      if (o == null) {
        return "null";
      }
      return o.toString().replace("\n", "\n    ");
    }
  
  
    public static HashSet<String> openapiFields;
    public static HashSet<String> openapiRequiredFields;
  
    static {
      // a set of all properties/fields (JSON key names)
      openapiFields = new HashSet<String>();
      openapiFields.add("address");
      openapiFields.add("address_code");
      openapiFields.add("alipay_user_id");
      openapiFields.add("area");
      openapiFields.add("avatar");
      openapiFields.add("balance_freeze_type");
      openapiFields.add("birthday");
      openapiFields.add("cert_no");
      openapiFields.add("cert_type_value");
      openapiFields.add("city");
      openapiFields.add("default_deliver_address");
      openapiFields.add("deliver_address_list");
      openapiFields.add("deliver_area");
      openapiFields.add("deliver_city");
      openapiFields.add("deliver_fullname");
      openapiFields.add("deliver_mobile");
      openapiFields.add("deliver_phone");
      openapiFields.add("deliver_province");
      openapiFields.add("email");
      openapiFields.add("family_name");
      openapiFields.add("firm_name");
      openapiFields.add("gender");
      openapiFields.add("is_balance_frozen");
      openapiFields.add("is_bank_auth");
      openapiFields.add("is_certified");
      openapiFields.add("is_certify_grade_a");
      openapiFields.add("is_id_auth");
      openapiFields.add("is_licence_auth");
      openapiFields.add("is_mobile_auth");
      openapiFields.add("is_student_certified");
      openapiFields.add("mobile");
      openapiFields.add("nick_name");
      openapiFields.add("phone");
      openapiFields.add("province");
      openapiFields.add("real_name");
      openapiFields.add("reduced_birthday");
      openapiFields.add("user_id");
      openapiFields.add("user_status");
      openapiFields.add("user_type_value");
      openapiFields.add("zip");
  
      // a set of required properties/fields (JSON key names)
      openapiRequiredFields = new HashSet<String>();
    }
  
   /**
    * Validates the JSON Object and throws an exception if issues found
    *
    * @param jsonObj JSON Object
    * @throws IOException if the JSON Object is invalid with respect to AlipayUserUserinfoShareResponseModel
    */
    public static void validateJsonObject(JsonObject jsonObj) throws IOException {
        if (jsonObj == null) {
          if (AlipayUserUserinfoShareResponseModel.openapiRequiredFields.isEmpty()) {
            return;
          } else { // has required fields
            throw new IllegalArgumentException(String.format("The required field(s) %s in AlipayUserUserinfoShareResponseModel is not found in the empty JSON string", AlipayUserUserinfoShareResponseModel.openapiRequiredFields.toString()));
          }
        }
        if (jsonObj.get("address") != null && !jsonObj.get("address").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `address` to be a primitive type in the JSON string but got `%s`", jsonObj.get("address").toString()));
        }
        if (jsonObj.get("address_code") != null && !jsonObj.get("address_code").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `address_code` to be a primitive type in the JSON string but got `%s`", jsonObj.get("address_code").toString()));
        }
        if (jsonObj.get("alipay_user_id") != null && !jsonObj.get("alipay_user_id").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `alipay_user_id` to be a primitive type in the JSON string but got `%s`", jsonObj.get("alipay_user_id").toString()));
        }
        if (jsonObj.get("area") != null && !jsonObj.get("area").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `area` to be a primitive type in the JSON string but got `%s`", jsonObj.get("area").toString()));
        }
        if (jsonObj.get("avatar") != null && !jsonObj.get("avatar").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `avatar` to be a primitive type in the JSON string but got `%s`", jsonObj.get("avatar").toString()));
        }
        if (jsonObj.get("balance_freeze_type") != null && !jsonObj.get("balance_freeze_type").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `balance_freeze_type` to be a primitive type in the JSON string but got `%s`", jsonObj.get("balance_freeze_type").toString()));
        }
        if (jsonObj.get("birthday") != null && !jsonObj.get("birthday").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `birthday` to be a primitive type in the JSON string but got `%s`", jsonObj.get("birthday").toString()));
        }
        if (jsonObj.get("cert_no") != null && !jsonObj.get("cert_no").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `cert_no` to be a primitive type in the JSON string but got `%s`", jsonObj.get("cert_no").toString()));
        }
        if (jsonObj.get("cert_type_value") != null && !jsonObj.get("cert_type_value").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `cert_type_value` to be a primitive type in the JSON string but got `%s`", jsonObj.get("cert_type_value").toString()));
        }
        if (jsonObj.get("city") != null && !jsonObj.get("city").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `city` to be a primitive type in the JSON string but got `%s`", jsonObj.get("city").toString()));
        }
        if (jsonObj.get("default_deliver_address") != null && !jsonObj.get("default_deliver_address").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `default_deliver_address` to be a primitive type in the JSON string but got `%s`", jsonObj.get("default_deliver_address").toString()));
        }
        JsonArray jsonArraydeliverAddressList = jsonObj.getAsJsonArray("deliver_address_list");
        if (jsonArraydeliverAddressList != null) {
          // ensure the json data is an array
          if (!jsonObj.get("deliver_address_list").isJsonArray()) {
            throw new IllegalArgumentException(String.format("Expected the field `deliver_address_list` to be an array in the JSON string but got `%s`", jsonObj.get("deliver_address_list").toString()));
          }
  
          // validate the optional field `deliver_address_list` (array)
          for (int i = 0; i < jsonArraydeliverAddressList.size(); i++) {
            DeliverAddress.validateJsonObject(jsonArraydeliverAddressList.get(i).getAsJsonObject());
          };
        }
        if (jsonObj.get("deliver_area") != null && !jsonObj.get("deliver_area").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `deliver_area` to be a primitive type in the JSON string but got `%s`", jsonObj.get("deliver_area").toString()));
        }
        if (jsonObj.get("deliver_city") != null && !jsonObj.get("deliver_city").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `deliver_city` to be a primitive type in the JSON string but got `%s`", jsonObj.get("deliver_city").toString()));
        }
        if (jsonObj.get("deliver_fullname") != null && !jsonObj.get("deliver_fullname").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `deliver_fullname` to be a primitive type in the JSON string but got `%s`", jsonObj.get("deliver_fullname").toString()));
        }
        if (jsonObj.get("deliver_mobile") != null && !jsonObj.get("deliver_mobile").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `deliver_mobile` to be a primitive type in the JSON string but got `%s`", jsonObj.get("deliver_mobile").toString()));
        }
        if (jsonObj.get("deliver_phone") != null && !jsonObj.get("deliver_phone").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `deliver_phone` to be a primitive type in the JSON string but got `%s`", jsonObj.get("deliver_phone").toString()));
        }
        if (jsonObj.get("deliver_province") != null && !jsonObj.get("deliver_province").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `deliver_province` to be a primitive type in the JSON string but got `%s`", jsonObj.get("deliver_province").toString()));
        }
        if (jsonObj.get("email") != null && !jsonObj.get("email").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `email` to be a primitive type in the JSON string but got `%s`", jsonObj.get("email").toString()));
        }
        if (jsonObj.get("family_name") != null && !jsonObj.get("family_name").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `family_name` to be a primitive type in the JSON string but got `%s`", jsonObj.get("family_name").toString()));
        }
        if (jsonObj.get("firm_name") != null && !jsonObj.get("firm_name").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `firm_name` to be a primitive type in the JSON string but got `%s`", jsonObj.get("firm_name").toString()));
        }
        if (jsonObj.get("gender") != null && !jsonObj.get("gender").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `gender` to be a primitive type in the JSON string but got `%s`", jsonObj.get("gender").toString()));
        }
        if (jsonObj.get("is_balance_frozen") != null && !jsonObj.get("is_balance_frozen").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `is_balance_frozen` to be a primitive type in the JSON string but got `%s`", jsonObj.get("is_balance_frozen").toString()));
        }
        if (jsonObj.get("is_bank_auth") != null && !jsonObj.get("is_bank_auth").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `is_bank_auth` to be a primitive type in the JSON string but got `%s`", jsonObj.get("is_bank_auth").toString()));
        }
        if (jsonObj.get("is_certified") != null && !jsonObj.get("is_certified").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `is_certified` to be a primitive type in the JSON string but got `%s`", jsonObj.get("is_certified").toString()));
        }
        if (jsonObj.get("is_certify_grade_a") != null && !jsonObj.get("is_certify_grade_a").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `is_certify_grade_a` to be a primitive type in the JSON string but got `%s`", jsonObj.get("is_certify_grade_a").toString()));
        }
        if (jsonObj.get("is_id_auth") != null && !jsonObj.get("is_id_auth").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `is_id_auth` to be a primitive type in the JSON string but got `%s`", jsonObj.get("is_id_auth").toString()));
        }
        if (jsonObj.get("is_licence_auth") != null && !jsonObj.get("is_licence_auth").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `is_licence_auth` to be a primitive type in the JSON string but got `%s`", jsonObj.get("is_licence_auth").toString()));
        }
        if (jsonObj.get("is_mobile_auth") != null && !jsonObj.get("is_mobile_auth").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `is_mobile_auth` to be a primitive type in the JSON string but got `%s`", jsonObj.get("is_mobile_auth").toString()));
        }
        if (jsonObj.get("is_student_certified") != null && !jsonObj.get("is_student_certified").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `is_student_certified` to be a primitive type in the JSON string but got `%s`", jsonObj.get("is_student_certified").toString()));
        }
        if (jsonObj.get("mobile") != null && !jsonObj.get("mobile").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `mobile` to be a primitive type in the JSON string but got `%s`", jsonObj.get("mobile").toString()));
        }
        if (jsonObj.get("nick_name") != null && !jsonObj.get("nick_name").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `nick_name` to be a primitive type in the JSON string but got `%s`", jsonObj.get("nick_name").toString()));
        }
        if (jsonObj.get("phone") != null && !jsonObj.get("phone").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `phone` to be a primitive type in the JSON string but got `%s`", jsonObj.get("phone").toString()));
        }
        if (jsonObj.get("province") != null && !jsonObj.get("province").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `province` to be a primitive type in the JSON string but got `%s`", jsonObj.get("province").toString()));
        }
        if (jsonObj.get("real_name") != null && !jsonObj.get("real_name").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `real_name` to be a primitive type in the JSON string but got `%s`", jsonObj.get("real_name").toString()));
        }
        if (jsonObj.get("reduced_birthday") != null && !jsonObj.get("reduced_birthday").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `reduced_birthday` to be a primitive type in the JSON string but got `%s`", jsonObj.get("reduced_birthday").toString()));
        }
        if (jsonObj.get("user_id") != null && !jsonObj.get("user_id").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `user_id` to be a primitive type in the JSON string but got `%s`", jsonObj.get("user_id").toString()));
        }
        if (jsonObj.get("user_status") != null && !jsonObj.get("user_status").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `user_status` to be a primitive type in the JSON string but got `%s`", jsonObj.get("user_status").toString()));
        }
        if (jsonObj.get("user_type_value") != null && !jsonObj.get("user_type_value").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `user_type_value` to be a primitive type in the JSON string but got `%s`", jsonObj.get("user_type_value").toString()));
        }
        if (jsonObj.get("zip") != null && !jsonObj.get("zip").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `zip` to be a primitive type in the JSON string but got `%s`", jsonObj.get("zip").toString()));
        }
    }
  
    public static class CustomTypeAdapterFactory implements TypeAdapterFactory {
      @SuppressWarnings("unchecked")
      @Override
      public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) {
         if (!AlipayUserUserinfoShareResponseModel.class.isAssignableFrom(type.getRawType())) {
           return null; // this class only serializes 'AlipayUserUserinfoShareResponseModel' and its subtypes
         }
         final TypeAdapter<JsonElement> elementAdapter = gson.getAdapter(JsonElement.class);
         final TypeAdapter<AlipayUserUserinfoShareResponseModel> thisAdapter
                          = gson.getDelegateAdapter(this, TypeToken.get(AlipayUserUserinfoShareResponseModel.class));
  
         return (TypeAdapter<T>) new TypeAdapter<AlipayUserUserinfoShareResponseModel>() {
             @Override
             public void write(JsonWriter out, AlipayUserUserinfoShareResponseModel value) throws IOException {
               JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject();
               obj.remove("additionalProperties");
               // serialize additonal properties
               if (value.getAdditionalProperties() != null) {
                 for (Map.Entry<String, Object> entry : value.getAdditionalProperties().entrySet()) {
                   if (entry.getValue() instanceof String)
                     obj.addProperty(entry.getKey(), (String) entry.getValue());
                   else if (entry.getValue() instanceof Number)
                     obj.addProperty(entry.getKey(), (Number) entry.getValue());
                   else if (entry.getValue() instanceof Boolean)
                     obj.addProperty(entry.getKey(), (Boolean) entry.getValue());
                   else if (entry.getValue() instanceof Character)
                     obj.addProperty(entry.getKey(), (Character) entry.getValue());
                   else {
                     obj.add(entry.getKey(), gson.toJsonTree(entry.getValue()).getAsJsonObject());
                   }
                 }
               }
               elementAdapter.write(out, obj);
             }
  
             @Override
             public AlipayUserUserinfoShareResponseModel read(JsonReader in) throws IOException {
               JsonObject jsonObj = elementAdapter.read(in).getAsJsonObject();
               validateJsonObject(jsonObj);
               // store additional fields in the deserialized instance
               AlipayUserUserinfoShareResponseModel instance = thisAdapter.fromJsonTree(jsonObj);
               for (Map.Entry<String, JsonElement> entry : jsonObj.entrySet()) {
                 if (!openapiFields.contains(entry.getKey())) {
                   if (entry.getValue().isJsonPrimitive()) { // primitive type
                     if (entry.getValue().getAsJsonPrimitive().isString())
                       instance.putAdditionalProperty(entry.getKey(), entry.getValue().getAsString());
                     else if (entry.getValue().getAsJsonPrimitive().isNumber())
                       instance.putAdditionalProperty(entry.getKey(), entry.getValue().getAsNumber());
                     else if (entry.getValue().getAsJsonPrimitive().isBoolean())
                       instance.putAdditionalProperty(entry.getKey(), entry.getValue().getAsBoolean());
                     else
                       throw new IllegalArgumentException(String.format("The field `%s` has unknown primitive type. Value: %s", entry.getKey(), entry.getValue().toString()));
                   } else { // non-primitive type
                     instance.putAdditionalProperty(entry.getKey(), gson.fromJson(entry.getValue(), HashMap.class));
                   }
                 }
               }
               return instance;
             }
  
         }.nullSafe();
      }
    }
  
   /**
    * Create an instance of AlipayUserUserinfoShareResponseModel given an JSON string
    *
    * @param jsonString JSON string
    * @return An instance of AlipayUserUserinfoShareResponseModel
    * @throws IOException if the JSON string is invalid with respect to AlipayUserUserinfoShareResponseModel
    */
    public static AlipayUserUserinfoShareResponseModel fromJson(String jsonString) throws IOException {
      return JSON.getGson().fromJson(jsonString, AlipayUserUserinfoShareResponseModel.class);
    }
  
   /**
    * Convert an instance of AlipayUserUserinfoShareResponseModel to an JSON string
    *
    * @return JSON string
    */
    public String toJson() {
      return JSON.getGson().toJson(this);
    }
  }
  
  