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.AddressInfo;
  import com.alipay.v3.model.ComplexBusinessTime;
  import com.alipay.v3.model.ContactInfo;
  import com.alipay.v3.model.IndustryQualificationInfo;
  import com.alipay.v3.model.MerchantShopIndustryInfo;
  import com.alipay.v3.model.SettleCardInfo;
  import com.alipay.v3.model.ShopBusinessTime;
  import com.alipay.v3.model.ShopExtInfo;
  import com.alipay.v3.model.ShopIndustryLicense;
  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;
  
  /**
   * AntMerchantExpandShopModifyModel
   */
  @javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen")
  public class AntMerchantExpandShopModifyModel {
    public static final String SERIALIZED_NAME_BIZ_CARDS = "biz_cards";
    @SerializedName(SERIALIZED_NAME_BIZ_CARDS)
    private List<SettleCardInfo> bizCards = null;
  
    public static final String SERIALIZED_NAME_BRAND_ID = "brand_id";
    @SerializedName(SERIALIZED_NAME_BRAND_ID)
    private String brandId;
  
    public static final String SERIALIZED_NAME_BUSINESS_ADDRESS = "business_address";
    @SerializedName(SERIALIZED_NAME_BUSINESS_ADDRESS)
    private AddressInfo businessAddress;
  
    public static final String SERIALIZED_NAME_BUSINESS_TIME = "business_time";
    @SerializedName(SERIALIZED_NAME_BUSINESS_TIME)
    private List<ShopBusinessTime> businessTime = null;
  
    public static final String SERIALIZED_NAME_CERT_IMAGE = "cert_image";
    @SerializedName(SERIALIZED_NAME_CERT_IMAGE)
    private String certImage;
  
    public static final String SERIALIZED_NAME_CERT_NAME = "cert_name";
    @SerializedName(SERIALIZED_NAME_CERT_NAME)
    private String certName;
  
    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 = "cert_type";
    @SerializedName(SERIALIZED_NAME_CERT_TYPE)
    private String certType;
  
    public static final String SERIALIZED_NAME_CONTACT_INFOS = "contact_infos";
    @SerializedName(SERIALIZED_NAME_CONTACT_INFOS)
    private ContactInfo contactInfos;
  
    public static final String SERIALIZED_NAME_CONTACT_MOBILE = "contact_mobile";
    @SerializedName(SERIALIZED_NAME_CONTACT_MOBILE)
    private String contactMobile;
  
    public static final String SERIALIZED_NAME_CONTACT_PHONE = "contact_phone";
    @SerializedName(SERIALIZED_NAME_CONTACT_PHONE)
    private String contactPhone;
  
    public static final String SERIALIZED_NAME_COVER = "cover";
    @SerializedName(SERIALIZED_NAME_COVER)
    private String cover;
  
    public static final String SERIALIZED_NAME_EXT_INFOS = "ext_infos";
    @SerializedName(SERIALIZED_NAME_EXT_INFOS)
    private List<ShopExtInfo> extInfos = null;
  
    public static final String SERIALIZED_NAME_INDUSTRY_INFO = "industry_info";
    @SerializedName(SERIALIZED_NAME_INDUSTRY_INFO)
    private List<MerchantShopIndustryInfo> industryInfo = null;
  
    public static final String SERIALIZED_NAME_INDUSTRY_LICENSE = "industry_license";
    @SerializedName(SERIALIZED_NAME_INDUSTRY_LICENSE)
    private List<ShopIndustryLicense> industryLicense = null;
  
    public static final String SERIALIZED_NAME_IP_ROLE_ID = "ip_role_id";
    @SerializedName(SERIALIZED_NAME_IP_ROLE_ID)
    private String ipRoleId;
  
    public static final String SERIALIZED_NAME_LEGAL_CERT_NO = "legal_cert_no";
    @SerializedName(SERIALIZED_NAME_LEGAL_CERT_NO)
    private String legalCertNo;
  
    public static final String SERIALIZED_NAME_LEGAL_NAME = "legal_name";
    @SerializedName(SERIALIZED_NAME_LEGAL_NAME)
    private String legalName;
  
    public static final String SERIALIZED_NAME_LICENSE_AUTH_LETTER_IMAGE = "license_auth_letter_image";
    @SerializedName(SERIALIZED_NAME_LICENSE_AUTH_LETTER_IMAGE)
    private String licenseAuthLetterImage;
  
    public static final String SERIALIZED_NAME_MEMO = "memo";
    @SerializedName(SERIALIZED_NAME_MEMO)
    private String memo;
  
    public static final String SERIALIZED_NAME_NEW_BUSINESS_TIME = "new_business_time";
    @SerializedName(SERIALIZED_NAME_NEW_BUSINESS_TIME)
    private List<ComplexBusinessTime> newBusinessTime = null;
  
    public static final String SERIALIZED_NAME_OUT_DOOR_IMAGES = "out_door_images";
    @SerializedName(SERIALIZED_NAME_OUT_DOOR_IMAGES)
    private List<String> outDoorImages = null;
  
    public static final String SERIALIZED_NAME_QUALIFICATIONS = "qualifications";
    @SerializedName(SERIALIZED_NAME_QUALIFICATIONS)
    private List<IndustryQualificationInfo> qualifications = null;
  
    public static final String SERIALIZED_NAME_SCENE = "scene";
    @SerializedName(SERIALIZED_NAME_SCENE)
    private String scene;
  
    public static final String SERIALIZED_NAME_SETTLE_ALIPAY_LOGON_ID = "settle_alipay_logon_id";
    @SerializedName(SERIALIZED_NAME_SETTLE_ALIPAY_LOGON_ID)
    private String settleAlipayLogonId;
  
    public static final String SERIALIZED_NAME_SHOP_CATEGORY = "shop_category";
    @SerializedName(SERIALIZED_NAME_SHOP_CATEGORY)
    private String shopCategory;
  
    public static final String SERIALIZED_NAME_SHOP_ID = "shop_id";
    @SerializedName(SERIALIZED_NAME_SHOP_ID)
    private String shopId;
  
    public static final String SERIALIZED_NAME_SHOP_MAIN_TYPE = "shop_main_type";
    @SerializedName(SERIALIZED_NAME_SHOP_MAIN_TYPE)
    private String shopMainType;
  
    public static final String SERIALIZED_NAME_SHOP_NAME = "shop_name";
    @SerializedName(SERIALIZED_NAME_SHOP_NAME)
    private String shopName;
  
    public static final String SERIALIZED_NAME_STORE_ID = "store_id";
    @SerializedName(SERIALIZED_NAME_STORE_ID)
    private String storeId;
  
    public AntMerchantExpandShopModifyModel() { 
    }
  
    public AntMerchantExpandShopModifyModel bizCards(List<SettleCardInfo> bizCards) {
      
      this.bizCards = bizCards;
      return this;
    }
  
    public AntMerchantExpandShopModifyModel addBizCardsItem(SettleCardInfo bizCardsItem) {
      if (this.bizCards == null) {
        this.bizCards = new ArrayList<>();
      }
      this.bizCards.add(bizCardsItem);
      return this;
    }
  
     /**
     * \&quot;门店结算卡信息。本业务当前只允许传入一张结算卡。 说明：本参数仅直付通业务使用，其余业务无需关注。\&quot;
     * @return bizCards
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(value = "\"门店结算卡信息。本业务当前只允许传入一张结算卡。 说明：本参数仅直付通业务使用，其余业务无需关注。\"")
  
    public List<SettleCardInfo> getBizCards() {
      return bizCards;
    }
  
  
    public void setBizCards(List<SettleCardInfo> bizCards) {
      this.bizCards = bizCards;
    }
  
  
    public AntMerchantExpandShopModifyModel brandId(String brandId) {
      
      this.brandId = brandId;
      return this;
    }
  
     /**
     * 品牌id。若无需更新本信息项，可以不填写。可以从B/P站品牌工具箱获取品牌id
     * @return brandId
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "20181026000001", value = "品牌id。若无需更新本信息项，可以不填写。可以从B/P站品牌工具箱获取品牌id")
  
    public String getBrandId() {
      return brandId;
    }
  
  
    public void setBrandId(String brandId) {
      this.brandId = brandId;
    }
  
  
    public AntMerchantExpandShopModifyModel businessAddress(AddressInfo businessAddress) {
      
      this.businessAddress = businessAddress;
      return this;
    }
  
     /**
     * Get businessAddress
     * @return businessAddress
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(value = "")
  
    public AddressInfo getBusinessAddress() {
      return businessAddress;
    }
  
  
    public void setBusinessAddress(AddressInfo businessAddress) {
      this.businessAddress = businessAddress;
    }
  
  
    public AntMerchantExpandShopModifyModel businessTime(List<ShopBusinessTime> businessTime) {
      
      this.businessTime = businessTime;
      return this;
    }
  
    public AntMerchantExpandShopModifyModel addBusinessTimeItem(ShopBusinessTime businessTimeItem) {
      if (this.businessTime == null) {
        this.businessTime = new ArrayList<>();
      }
      this.businessTime.add(businessTimeItem);
      return this;
    }
  
     /**
     * 店铺经营时间。若无需更新本信息项，可以不填写
     * @return businessTime
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(value = "店铺经营时间。若无需更新本信息项，可以不填写")
  
    public List<ShopBusinessTime> getBusinessTime() {
      return businessTime;
    }
  
  
    public void setBusinessTime(List<ShopBusinessTime> businessTime) {
      this.businessTime = businessTime;
    }
  
  
    public AntMerchantExpandShopModifyModel certImage(String certImage) {
      
      this.certImage = certImage;
      return this;
    }
  
     /**
     * 营业执照图片KEY
     * @return certImage
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "c6c0c7a1-b9d5-4e5d-b9d4-9eed39f00e65.jpg", value = "营业执照图片KEY")
  
    public String getCertImage() {
      return certImage;
    }
  
  
    public void setCertImage(String certImage) {
      this.certImage = certImage;
    }
  
  
    public AntMerchantExpandShopModifyModel certName(String certName) {
      
      this.certName = certName;
      return this;
    }
  
     /**
     * 营业执照名称，填写值为营业执照或统一社会信用代码证上的名称。
     * @return certName
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "支付宝东门小卖铺", value = "营业执照名称，填写值为营业执照或统一社会信用代码证上的名称。")
  
    public String getCertName() {
      return certName;
    }
  
  
    public void setCertName(String certName) {
      this.certName = certName;
    }
  
  
    public AntMerchantExpandShopModifyModel certNo(String certNo) {
      
      this.certNo = certNo;
      return this;
    }
  
     /**
     * 证件号码。请填写店铺营业执照号。
     * @return certNo
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "9133010608210550XR", value = "证件号码。请填写店铺营业执照号。")
  
    public String getCertNo() {
      return certNo;
    }
  
  
    public void setCertNo(String certNo) {
      this.certNo = certNo;
    }
  
  
    public AntMerchantExpandShopModifyModel certType(String certType) {
      
      this.certType = certType;
      return this;
    }
  
     /**
     * 证件类型
     * @return certType
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "201", value = "证件类型")
  
    public String getCertType() {
      return certType;
    }
  
  
    public void setCertType(String certType) {
      this.certType = certType;
    }
  
  
    public AntMerchantExpandShopModifyModel contactInfos(ContactInfo contactInfos) {
      
      this.contactInfos = contactInfos;
      return this;
    }
  
     /**
     * Get contactInfos
     * @return contactInfos
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(value = "")
  
    public ContactInfo getContactInfos() {
      return contactInfos;
    }
  
  
    public void setContactInfos(ContactInfo contactInfos) {
      this.contactInfos = contactInfos;
    }
  
  
    public AntMerchantExpandShopModifyModel contactMobile(String contactMobile) {
      
      this.contactMobile = contactMobile;
      return this;
    }
  
     /**
     * 店铺联系手机
     * @return contactMobile
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "13901390139", value = "店铺联系手机")
  
    public String getContactMobile() {
      return contactMobile;
    }
  
  
    public void setContactMobile(String contactMobile) {
      this.contactMobile = contactMobile;
    }
  
  
    public AntMerchantExpandShopModifyModel contactPhone(String contactPhone) {
      
      this.contactPhone = contactPhone;
      return this;
    }
  
     /**
     * 店铺的联系固话
     * @return contactPhone
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "010-62286228", value = "店铺的联系固话")
  
    public String getContactPhone() {
      return contactPhone;
    }
  
  
    public void setContactPhone(String contactPhone) {
      this.contactPhone = contactPhone;
    }
  
  
    public AntMerchantExpandShopModifyModel cover(String cover) {
      
      this.cover = cover;
      return this;
    }
  
     /**
     * 封面图，其值为使用ant.merchant.expand.indirect.image.upload上传图片得到的一串oss key。若无需更新本信息项，可以不填写。若填写则会整体覆盖原有的封面图
     * @return cover
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "c6c0c7a1-b9d5-4e5d-b9d4-9eed39f00e65.jpg", value = "封面图，其值为使用ant.merchant.expand.indirect.image.upload上传图片得到的一串oss key。若无需更新本信息项，可以不填写。若填写则会整体覆盖原有的封面图")
  
    public String getCover() {
      return cover;
    }
  
  
    public void setCover(String cover) {
      this.cover = cover;
    }
  
  
    public AntMerchantExpandShopModifyModel extInfos(List<ShopExtInfo> extInfos) {
      
      this.extInfos = extInfos;
      return this;
    }
  
    public AntMerchantExpandShopModifyModel addExtInfosItem(ShopExtInfo extInfosItem) {
      if (this.extInfos == null) {
        this.extInfos = new ArrayList<>();
      }
      this.extInfos.add(extInfosItem);
      return this;
    }
  
     /**
     * 扩展信息列表。key值需要向对应行业的bd进行申请。传入本项时，按key进行更新或补充
     * @return extInfos
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(value = "扩展信息列表。key值需要向对应行业的bd进行申请。传入本项时，按key进行更新或补充")
  
    public List<ShopExtInfo> getExtInfos() {
      return extInfos;
    }
  
  
    public void setExtInfos(List<ShopExtInfo> extInfos) {
      this.extInfos = extInfos;
    }
  
  
    public AntMerchantExpandShopModifyModel industryInfo(List<MerchantShopIndustryInfo> industryInfo) {
      
      this.industryInfo = industryInfo;
      return this;
    }
  
    public AntMerchantExpandShopModifyModel addIndustryInfoItem(MerchantShopIndustryInfo industryInfoItem) {
      if (this.industryInfo == null) {
        this.industryInfo = new ArrayList<>();
      }
      this.industryInfo.add(industryInfoItem);
      return this;
    }
  
     /**
     * 行业信息，例如所属集团、特殊标签
     * @return industryInfo
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(value = "行业信息，例如所属集团、特殊标签")
  
    public List<MerchantShopIndustryInfo> getIndustryInfo() {
      return industryInfo;
    }
  
  
    public void setIndustryInfo(List<MerchantShopIndustryInfo> industryInfo) {
      this.industryInfo = industryInfo;
    }
  
  
    public AntMerchantExpandShopModifyModel industryLicense(List<ShopIndustryLicense> industryLicense) {
      
      this.industryLicense = industryLicense;
      return this;
    }
  
    public AntMerchantExpandShopModifyModel addIndustryLicenseItem(ShopIndustryLicense industryLicenseItem) {
      if (this.industryLicense == null) {
        this.industryLicense = new ArrayList<>();
      }
      this.industryLicense.add(industryLicenseItem);
      return this;
    }
  
     /**
     * 门店资质信息
     * @return industryLicense
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(value = "门店资质信息")
  
    public List<ShopIndustryLicense> getIndustryLicense() {
      return industryLicense;
    }
  
  
    public void setIndustryLicense(List<ShopIndustryLicense> industryLicense) {
      this.industryLicense = industryLicense;
    }
  
  
    public AntMerchantExpandShopModifyModel ipRoleId(String ipRoleId) {
      
      this.ipRoleId = ipRoleId;
      return this;
    }
  
     /**
     * 商户角色id，表示将要修改的店属于哪个商户角色，和store_id一起定位待修改的门店。对于直连场景，填写商户pid；对于间连场景（线上、线下、直付通），填写商户smid。本信息项不可修改
     * @return ipRoleId
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "2088301155943087", value = "商户角色id，表示将要修改的店属于哪个商户角色，和store_id一起定位待修改的门店。对于直连场景，填写商户pid；对于间连场景（线上、线下、直付通），填写商户smid。本信息项不可修改")
  
    public String getIpRoleId() {
      return ipRoleId;
    }
  
  
    public void setIpRoleId(String ipRoleId) {
      this.ipRoleId = ipRoleId;
    }
  
  
    public AntMerchantExpandShopModifyModel legalCertNo(String legalCertNo) {
      
      this.legalCertNo = legalCertNo;
      return this;
    }
  
     /**
     * 法人身份证号。如果要更新，必须和legal_name成对传入
     * @return legalCertNo
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "100100198811110001", value = "法人身份证号。如果要更新，必须和legal_name成对传入")
  
    public String getLegalCertNo() {
      return legalCertNo;
    }
  
  
    public void setLegalCertNo(String legalCertNo) {
      this.legalCertNo = legalCertNo;
    }
  
  
    public AntMerchantExpandShopModifyModel legalName(String legalName) {
      
      this.legalName = legalName;
      return this;
    }
  
     /**
     * 法人名称。如果要更新，必须和legal_cert_no成对传入
     * @return legalName
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "支小宝", value = "法人名称。如果要更新，必须和legal_cert_no成对传入")
  
    public String getLegalName() {
      return legalName;
    }
  
  
    public void setLegalName(String legalName) {
      this.legalName = legalName;
    }
  
  
    public AntMerchantExpandShopModifyModel licenseAuthLetterImage(String licenseAuthLetterImage) {
      
      this.licenseAuthLetterImage = licenseAuthLetterImage;
      return this;
    }
  
     /**
     * 营业执照授权函。其值为使用ant.merchant.expand.indirect.image.upload上传图片得到的一串oss key。若无需更新本信息项，可以不填写
     * @return licenseAuthLetterImage
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "c6c0c7a1-b9d5-4e5d-b9d4-9eed39f00e65.jpg", value = "营业执照授权函。其值为使用ant.merchant.expand.indirect.image.upload上传图片得到的一串oss key。若无需更新本信息项，可以不填写")
  
    public String getLicenseAuthLetterImage() {
      return licenseAuthLetterImage;
    }
  
  
    public void setLicenseAuthLetterImage(String licenseAuthLetterImage) {
      this.licenseAuthLetterImage = licenseAuthLetterImage;
    }
  
  
    public AntMerchantExpandShopModifyModel memo(String memo) {
      
      this.memo = memo;
      return this;
    }
  
     /**
     * 备注
     * @return memo
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "备注", value = "备注")
  
    public String getMemo() {
      return memo;
    }
  
  
    public void setMemo(String memo) {
      this.memo = memo;
    }
  
  
    public AntMerchantExpandShopModifyModel newBusinessTime(List<ComplexBusinessTime> newBusinessTime) {
      
      this.newBusinessTime = newBusinessTime;
      return this;
    }
  
    public AntMerchantExpandShopModifyModel addNewBusinessTimeItem(ComplexBusinessTime newBusinessTimeItem) {
      if (this.newBusinessTime == null) {
        this.newBusinessTime = new ArrayList<>();
      }
      this.newBusinessTime.add(newBusinessTimeItem);
      return this;
    }
  
     /**
     * 门店营业时间，支持一周7天，支持1天内多时间段
     * @return newBusinessTime
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(value = "门店营业时间，支持一周7天，支持1天内多时间段")
  
    public List<ComplexBusinessTime> getNewBusinessTime() {
      return newBusinessTime;
    }
  
  
    public void setNewBusinessTime(List<ComplexBusinessTime> newBusinessTime) {
      this.newBusinessTime = newBusinessTime;
    }
  
  
    public AntMerchantExpandShopModifyModel outDoorImages(List<String> outDoorImages) {
      
      this.outDoorImages = outDoorImages;
      return this;
    }
  
    public AntMerchantExpandShopModifyModel addOutDoorImagesItem(String outDoorImagesItem) {
      if (this.outDoorImages == null) {
        this.outDoorImages = new ArrayList<>();
      }
      this.outDoorImages.add(outDoorImagesItem);
      return this;
    }
  
     /**
     * 门头照，其值为使用ant.merchant.expand.indirect.image.upload上传图片得到的一串oss key。若无需更新本信息项，可以不填写。若填写则会整体覆盖原有的门头照列表
     * @return outDoorImages
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "[\"c6c0c7a1-b9d5-4e5d-b9d4-9eed39f00e65.jpg\"]", value = "门头照，其值为使用ant.merchant.expand.indirect.image.upload上传图片得到的一串oss key。若无需更新本信息项，可以不填写。若填写则会整体覆盖原有的门头照列表")
  
    public List<String> getOutDoorImages() {
      return outDoorImages;
    }
  
  
    public void setOutDoorImages(List<String> outDoorImages) {
      this.outDoorImages = outDoorImages;
    }
  
  
    public AntMerchantExpandShopModifyModel qualifications(List<IndustryQualificationInfo> qualifications) {
      
      this.qualifications = qualifications;
      return this;
    }
  
    public AntMerchantExpandShopModifyModel addQualificationsItem(IndustryQualificationInfo qualificationsItem) {
      if (this.qualifications == null) {
        this.qualifications = new ArrayList<>();
      }
      this.qualifications.add(qualificationsItem);
      return this;
    }
  
     /**
     * 行业特殊资质。若无需更新本信息项，可以不填写。填写会按类型进行更新或补充
     * @return qualifications
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(value = "行业特殊资质。若无需更新本信息项，可以不填写。填写会按类型进行更新或补充")
  
    public List<IndustryQualificationInfo> getQualifications() {
      return qualifications;
    }
  
  
    public void setQualifications(List<IndustryQualificationInfo> qualifications) {
      this.qualifications = qualifications;
    }
  
  
    public AntMerchantExpandShopModifyModel scene(String scene) {
      
      this.scene = scene;
      return this;
    }
  
     /**
     * 场景。若无需更新本信息项，可以不填写
     * @return scene
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "PARK", value = "场景。若无需更新本信息项，可以不填写")
  
    public String getScene() {
      return scene;
    }
  
  
    public void setScene(String scene) {
      this.scene = scene;
    }
  
  
    public AntMerchantExpandShopModifyModel settleAlipayLogonId(String settleAlipayLogonId) {
      
      this.settleAlipayLogonId = settleAlipayLogonId;
      return this;
    }
  
     /**
     * 结算支付宝账号的登录号。若无需更新本信息项，可以不填写
     * @return settleAlipayLogonId
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "demo@163.com", value = "结算支付宝账号的登录号。若无需更新本信息项，可以不填写")
  
    public String getSettleAlipayLogonId() {
      return settleAlipayLogonId;
    }
  
  
    public void setSettleAlipayLogonId(String settleAlipayLogonId) {
      this.settleAlipayLogonId = settleAlipayLogonId;
    }
  
  
    public AntMerchantExpandShopModifyModel shopCategory(String shopCategory) {
      
      this.shopCategory = shopCategory;
      return this;
    }
  
     /**
     * 新版门店类目标准二级类目code。类目标准及与原类目映射关系参见 &lt;a href&#x3D;\&quot;https://gw.alipayobjects.com/os/bmw-prod/4b3f82df-e53e-4b84-bc41-fe025101e726.xlsx\&quot;&gt;支付宝门店类目-最新&lt;/a&gt; 表格。
     * @return shopCategory
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "B0001", value = "新版门店类目标准二级类目code。类目标准及与原类目映射关系参见 <a href=\"https://gw.alipayobjects.com/os/bmw-prod/4b3f82df-e53e-4b84-bc41-fe025101e726.xlsx\">支付宝门店类目-最新</a> 表格。")
  
    public String getShopCategory() {
      return shopCategory;
    }
  
  
    public void setShopCategory(String shopCategory) {
      this.shopCategory = shopCategory;
    }
  
  
    public AntMerchantExpandShopModifyModel shopId(String shopId) {
      
      this.shopId = shopId;
      return this;
    }
  
     /**
     * 蚂蚁店铺id，用于查出待修改的门店。填写本参数的话，store_id和ip_role_id可以不填。本信息项不可修改
     * @return shopId
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "2018011900502000000005124744", value = "蚂蚁店铺id，用于查出待修改的门店。填写本参数的话，store_id和ip_role_id可以不填。本信息项不可修改")
  
    public String getShopId() {
      return shopId;
    }
  
  
    public void setShopId(String shopId) {
      this.shopId = shopId;
    }
  
  
    public AntMerchantExpandShopModifyModel shopMainType(String shopMainType) {
      
      this.shopMainType = shopMainType;
      return this;
    }
  
     /**
     * 主要针对医疗行业门店主体类型进件使用，不同门店认证主体需要相应的主体资质证书。  企业营业执照: ENTERPRISE;  事业单位法人证书: INST_RGST_CTF;  民办非企业单位登记证书 PRIVATE_NON_ENTERPRISE
     * @return shopMainType
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "ENTERPRISE", value = "主要针对医疗行业门店主体类型进件使用，不同门店认证主体需要相应的主体资质证书。  企业营业执照: ENTERPRISE;  事业单位法人证书: INST_RGST_CTF;  民办非企业单位登记证书 PRIVATE_NON_ENTERPRISE")
  
    public String getShopMainType() {
      return shopMainType;
    }
  
  
    public void setShopMainType(String shopMainType) {
      this.shopMainType = shopMainType;
    }
  
  
    public AntMerchantExpandShopModifyModel shopName(String shopName) {
      
      this.shopName = shopName;
      return this;
    }
  
     /**
     * 店铺名称。直连开店要保证全局店铺名称+地址唯一，间连开店要保证服务商pid下店铺名称+地址唯一。若无需更新本信息项，可以不填写
     * @return shopName
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "支付宝东门小卖铺", value = "店铺名称。直连开店要保证全局店铺名称+地址唯一，间连开店要保证服务商pid下店铺名称+地址唯一。若无需更新本信息项，可以不填写")
  
    public String getShopName() {
      return shopName;
    }
  
  
    public void setShopName(String shopName) {
      this.shopName = shopName;
    }
  
  
    public AntMerchantExpandShopModifyModel storeId(String storeId) {
      
      this.storeId = storeId;
      return this;
    }
  
     /**
     * 门店编号，表示该门店在该商户角色id(直连pid，间连smid)下，由商户自己定义的外部门店编号。用于查出待修改的门店。
     * @return storeId
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "NO0001", value = "门店编号，表示该门店在该商户角色id(直连pid，间连smid)下，由商户自己定义的外部门店编号。用于查出待修改的门店。")
  
    public String getStoreId() {
      return storeId;
    }
  
  
    public void setStoreId(String storeId) {
      this.storeId = storeId;
    }
  
    /**
     * 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 AntMerchantExpandShopModifyModel instance itself
     */
    public AntMerchantExpandShopModifyModel 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;
      }
      AntMerchantExpandShopModifyModel antMerchantExpandShopModifyModel = (AntMerchantExpandShopModifyModel) o;
      return Objects.equals(this.bizCards, antMerchantExpandShopModifyModel.bizCards) &&
          Objects.equals(this.brandId, antMerchantExpandShopModifyModel.brandId) &&
          Objects.equals(this.businessAddress, antMerchantExpandShopModifyModel.businessAddress) &&
          Objects.equals(this.businessTime, antMerchantExpandShopModifyModel.businessTime) &&
          Objects.equals(this.certImage, antMerchantExpandShopModifyModel.certImage) &&
          Objects.equals(this.certName, antMerchantExpandShopModifyModel.certName) &&
          Objects.equals(this.certNo, antMerchantExpandShopModifyModel.certNo) &&
          Objects.equals(this.certType, antMerchantExpandShopModifyModel.certType) &&
          Objects.equals(this.contactInfos, antMerchantExpandShopModifyModel.contactInfos) &&
          Objects.equals(this.contactMobile, antMerchantExpandShopModifyModel.contactMobile) &&
          Objects.equals(this.contactPhone, antMerchantExpandShopModifyModel.contactPhone) &&
          Objects.equals(this.cover, antMerchantExpandShopModifyModel.cover) &&
          Objects.equals(this.extInfos, antMerchantExpandShopModifyModel.extInfos) &&
          Objects.equals(this.industryInfo, antMerchantExpandShopModifyModel.industryInfo) &&
          Objects.equals(this.industryLicense, antMerchantExpandShopModifyModel.industryLicense) &&
          Objects.equals(this.ipRoleId, antMerchantExpandShopModifyModel.ipRoleId) &&
          Objects.equals(this.legalCertNo, antMerchantExpandShopModifyModel.legalCertNo) &&
          Objects.equals(this.legalName, antMerchantExpandShopModifyModel.legalName) &&
          Objects.equals(this.licenseAuthLetterImage, antMerchantExpandShopModifyModel.licenseAuthLetterImage) &&
          Objects.equals(this.memo, antMerchantExpandShopModifyModel.memo) &&
          Objects.equals(this.newBusinessTime, antMerchantExpandShopModifyModel.newBusinessTime) &&
          Objects.equals(this.outDoorImages, antMerchantExpandShopModifyModel.outDoorImages) &&
          Objects.equals(this.qualifications, antMerchantExpandShopModifyModel.qualifications) &&
          Objects.equals(this.scene, antMerchantExpandShopModifyModel.scene) &&
          Objects.equals(this.settleAlipayLogonId, antMerchantExpandShopModifyModel.settleAlipayLogonId) &&
          Objects.equals(this.shopCategory, antMerchantExpandShopModifyModel.shopCategory) &&
          Objects.equals(this.shopId, antMerchantExpandShopModifyModel.shopId) &&
          Objects.equals(this.shopMainType, antMerchantExpandShopModifyModel.shopMainType) &&
          Objects.equals(this.shopName, antMerchantExpandShopModifyModel.shopName) &&
          Objects.equals(this.storeId, antMerchantExpandShopModifyModel.storeId)&&
          Objects.equals(this.additionalProperties, antMerchantExpandShopModifyModel.additionalProperties);
    }
  
    @Override
    public int hashCode() {
      return Objects.hash(bizCards, brandId, businessAddress, businessTime, certImage, certName, certNo, certType, contactInfos, contactMobile, contactPhone, cover, extInfos, industryInfo, industryLicense, ipRoleId, legalCertNo, legalName, licenseAuthLetterImage, memo, newBusinessTime, outDoorImages, qualifications, scene, settleAlipayLogonId, shopCategory, shopId, shopMainType, shopName, storeId, additionalProperties);
    }
  
    @Override
    public String toString() {
      StringBuilder sb = new StringBuilder();
      sb.append("class AntMerchantExpandShopModifyModel {\n");
      sb.append("    bizCards: ").append(toIndentedString(bizCards)).append("\n");
      sb.append("    brandId: ").append(toIndentedString(brandId)).append("\n");
      sb.append("    businessAddress: ").append(toIndentedString(businessAddress)).append("\n");
      sb.append("    businessTime: ").append(toIndentedString(businessTime)).append("\n");
      sb.append("    certImage: ").append(toIndentedString(certImage)).append("\n");
      sb.append("    certName: ").append(toIndentedString(certName)).append("\n");
      sb.append("    certNo: ").append(toIndentedString(certNo)).append("\n");
      sb.append("    certType: ").append(toIndentedString(certType)).append("\n");
      sb.append("    contactInfos: ").append(toIndentedString(contactInfos)).append("\n");
      sb.append("    contactMobile: ").append(toIndentedString(contactMobile)).append("\n");
      sb.append("    contactPhone: ").append(toIndentedString(contactPhone)).append("\n");
      sb.append("    cover: ").append(toIndentedString(cover)).append("\n");
      sb.append("    extInfos: ").append(toIndentedString(extInfos)).append("\n");
      sb.append("    industryInfo: ").append(toIndentedString(industryInfo)).append("\n");
      sb.append("    industryLicense: ").append(toIndentedString(industryLicense)).append("\n");
      sb.append("    ipRoleId: ").append(toIndentedString(ipRoleId)).append("\n");
      sb.append("    legalCertNo: ").append(toIndentedString(legalCertNo)).append("\n");
      sb.append("    legalName: ").append(toIndentedString(legalName)).append("\n");
      sb.append("    licenseAuthLetterImage: ").append(toIndentedString(licenseAuthLetterImage)).append("\n");
      sb.append("    memo: ").append(toIndentedString(memo)).append("\n");
      sb.append("    newBusinessTime: ").append(toIndentedString(newBusinessTime)).append("\n");
      sb.append("    outDoorImages: ").append(toIndentedString(outDoorImages)).append("\n");
      sb.append("    qualifications: ").append(toIndentedString(qualifications)).append("\n");
      sb.append("    scene: ").append(toIndentedString(scene)).append("\n");
      sb.append("    settleAlipayLogonId: ").append(toIndentedString(settleAlipayLogonId)).append("\n");
      sb.append("    shopCategory: ").append(toIndentedString(shopCategory)).append("\n");
      sb.append("    shopId: ").append(toIndentedString(shopId)).append("\n");
      sb.append("    shopMainType: ").append(toIndentedString(shopMainType)).append("\n");
      sb.append("    shopName: ").append(toIndentedString(shopName)).append("\n");
      sb.append("    storeId: ").append(toIndentedString(storeId)).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("biz_cards");
      openapiFields.add("brand_id");
      openapiFields.add("business_address");
      openapiFields.add("business_time");
      openapiFields.add("cert_image");
      openapiFields.add("cert_name");
      openapiFields.add("cert_no");
      openapiFields.add("cert_type");
      openapiFields.add("contact_infos");
      openapiFields.add("contact_mobile");
      openapiFields.add("contact_phone");
      openapiFields.add("cover");
      openapiFields.add("ext_infos");
      openapiFields.add("industry_info");
      openapiFields.add("industry_license");
      openapiFields.add("ip_role_id");
      openapiFields.add("legal_cert_no");
      openapiFields.add("legal_name");
      openapiFields.add("license_auth_letter_image");
      openapiFields.add("memo");
      openapiFields.add("new_business_time");
      openapiFields.add("out_door_images");
      openapiFields.add("qualifications");
      openapiFields.add("scene");
      openapiFields.add("settle_alipay_logon_id");
      openapiFields.add("shop_category");
      openapiFields.add("shop_id");
      openapiFields.add("shop_main_type");
      openapiFields.add("shop_name");
      openapiFields.add("store_id");
  
      // 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 AntMerchantExpandShopModifyModel
    */
    public static void validateJsonObject(JsonObject jsonObj) throws IOException {
        if (jsonObj == null) {
          if (AntMerchantExpandShopModifyModel.openapiRequiredFields.isEmpty()) {
            return;
          } else { // has required fields
            throw new IllegalArgumentException(String.format("The required field(s) %s in AntMerchantExpandShopModifyModel is not found in the empty JSON string", AntMerchantExpandShopModifyModel.openapiRequiredFields.toString()));
          }
        }
        JsonArray jsonArraybizCards = jsonObj.getAsJsonArray("biz_cards");
        if (jsonArraybizCards != null) {
          // ensure the json data is an array
          if (!jsonObj.get("biz_cards").isJsonArray()) {
            throw new IllegalArgumentException(String.format("Expected the field `biz_cards` to be an array in the JSON string but got `%s`", jsonObj.get("biz_cards").toString()));
          }
  
          // validate the optional field `biz_cards` (array)
          for (int i = 0; i < jsonArraybizCards.size(); i++) {
            SettleCardInfo.validateJsonObject(jsonArraybizCards.get(i).getAsJsonObject());
          };
        }
        if (jsonObj.get("brand_id") != null && !jsonObj.get("brand_id").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `brand_id` to be a primitive type in the JSON string but got `%s`", jsonObj.get("brand_id").toString()));
        }
        // validate the optional field `business_address`
        if (jsonObj.getAsJsonObject("business_address") != null) {
          AddressInfo.validateJsonObject(jsonObj.getAsJsonObject("business_address"));
        }
        JsonArray jsonArraybusinessTime = jsonObj.getAsJsonArray("business_time");
        if (jsonArraybusinessTime != null) {
          // ensure the json data is an array
          if (!jsonObj.get("business_time").isJsonArray()) {
            throw new IllegalArgumentException(String.format("Expected the field `business_time` to be an array in the JSON string but got `%s`", jsonObj.get("business_time").toString()));
          }
  
          // validate the optional field `business_time` (array)
          for (int i = 0; i < jsonArraybusinessTime.size(); i++) {
            ShopBusinessTime.validateJsonObject(jsonArraybusinessTime.get(i).getAsJsonObject());
          };
        }
        if (jsonObj.get("cert_image") != null && !jsonObj.get("cert_image").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `cert_image` to be a primitive type in the JSON string but got `%s`", jsonObj.get("cert_image").toString()));
        }
        if (jsonObj.get("cert_name") != null && !jsonObj.get("cert_name").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `cert_name` to be a primitive type in the JSON string but got `%s`", jsonObj.get("cert_name").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") != null && !jsonObj.get("cert_type").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `cert_type` to be a primitive type in the JSON string but got `%s`", jsonObj.get("cert_type").toString()));
        }
        // validate the optional field `contact_infos`
        if (jsonObj.getAsJsonObject("contact_infos") != null) {
          ContactInfo.validateJsonObject(jsonObj.getAsJsonObject("contact_infos"));
        }
        if (jsonObj.get("contact_mobile") != null && !jsonObj.get("contact_mobile").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `contact_mobile` to be a primitive type in the JSON string but got `%s`", jsonObj.get("contact_mobile").toString()));
        }
        if (jsonObj.get("contact_phone") != null && !jsonObj.get("contact_phone").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `contact_phone` to be a primitive type in the JSON string but got `%s`", jsonObj.get("contact_phone").toString()));
        }
        if (jsonObj.get("cover") != null && !jsonObj.get("cover").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `cover` to be a primitive type in the JSON string but got `%s`", jsonObj.get("cover").toString()));
        }
        JsonArray jsonArrayextInfos = jsonObj.getAsJsonArray("ext_infos");
        if (jsonArrayextInfos != null) {
          // ensure the json data is an array
          if (!jsonObj.get("ext_infos").isJsonArray()) {
            throw new IllegalArgumentException(String.format("Expected the field `ext_infos` to be an array in the JSON string but got `%s`", jsonObj.get("ext_infos").toString()));
          }
  
          // validate the optional field `ext_infos` (array)
          for (int i = 0; i < jsonArrayextInfos.size(); i++) {
            ShopExtInfo.validateJsonObject(jsonArrayextInfos.get(i).getAsJsonObject());
          };
        }
        JsonArray jsonArrayindustryInfo = jsonObj.getAsJsonArray("industry_info");
        if (jsonArrayindustryInfo != null) {
          // ensure the json data is an array
          if (!jsonObj.get("industry_info").isJsonArray()) {
            throw new IllegalArgumentException(String.format("Expected the field `industry_info` to be an array in the JSON string but got `%s`", jsonObj.get("industry_info").toString()));
          }
  
          // validate the optional field `industry_info` (array)
          for (int i = 0; i < jsonArrayindustryInfo.size(); i++) {
            MerchantShopIndustryInfo.validateJsonObject(jsonArrayindustryInfo.get(i).getAsJsonObject());
          };
        }
        JsonArray jsonArrayindustryLicense = jsonObj.getAsJsonArray("industry_license");
        if (jsonArrayindustryLicense != null) {
          // ensure the json data is an array
          if (!jsonObj.get("industry_license").isJsonArray()) {
            throw new IllegalArgumentException(String.format("Expected the field `industry_license` to be an array in the JSON string but got `%s`", jsonObj.get("industry_license").toString()));
          }
  
          // validate the optional field `industry_license` (array)
          for (int i = 0; i < jsonArrayindustryLicense.size(); i++) {
            ShopIndustryLicense.validateJsonObject(jsonArrayindustryLicense.get(i).getAsJsonObject());
          };
        }
        if (jsonObj.get("ip_role_id") != null && !jsonObj.get("ip_role_id").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `ip_role_id` to be a primitive type in the JSON string but got `%s`", jsonObj.get("ip_role_id").toString()));
        }
        if (jsonObj.get("legal_cert_no") != null && !jsonObj.get("legal_cert_no").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `legal_cert_no` to be a primitive type in the JSON string but got `%s`", jsonObj.get("legal_cert_no").toString()));
        }
        if (jsonObj.get("legal_name") != null && !jsonObj.get("legal_name").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `legal_name` to be a primitive type in the JSON string but got `%s`", jsonObj.get("legal_name").toString()));
        }
        if (jsonObj.get("license_auth_letter_image") != null && !jsonObj.get("license_auth_letter_image").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `license_auth_letter_image` to be a primitive type in the JSON string but got `%s`", jsonObj.get("license_auth_letter_image").toString()));
        }
        if (jsonObj.get("memo") != null && !jsonObj.get("memo").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `memo` to be a primitive type in the JSON string but got `%s`", jsonObj.get("memo").toString()));
        }
        JsonArray jsonArraynewBusinessTime = jsonObj.getAsJsonArray("new_business_time");
        if (jsonArraynewBusinessTime != null) {
          // ensure the json data is an array
          if (!jsonObj.get("new_business_time").isJsonArray()) {
            throw new IllegalArgumentException(String.format("Expected the field `new_business_time` to be an array in the JSON string but got `%s`", jsonObj.get("new_business_time").toString()));
          }
  
          // validate the optional field `new_business_time` (array)
          for (int i = 0; i < jsonArraynewBusinessTime.size(); i++) {
            ComplexBusinessTime.validateJsonObject(jsonArraynewBusinessTime.get(i).getAsJsonObject());
          };
        }
        // ensure the json data is an array
        if (jsonObj.get("out_door_images") != null && !jsonObj.get("out_door_images").isJsonArray()) {
          throw new IllegalArgumentException(String.format("Expected the field `out_door_images` to be an array in the JSON string but got `%s`", jsonObj.get("out_door_images").toString()));
        }
        JsonArray jsonArrayqualifications = jsonObj.getAsJsonArray("qualifications");
        if (jsonArrayqualifications != null) {
          // ensure the json data is an array
          if (!jsonObj.get("qualifications").isJsonArray()) {
            throw new IllegalArgumentException(String.format("Expected the field `qualifications` to be an array in the JSON string but got `%s`", jsonObj.get("qualifications").toString()));
          }
  
          // validate the optional field `qualifications` (array)
          for (int i = 0; i < jsonArrayqualifications.size(); i++) {
            IndustryQualificationInfo.validateJsonObject(jsonArrayqualifications.get(i).getAsJsonObject());
          };
        }
        if (jsonObj.get("scene") != null && !jsonObj.get("scene").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `scene` to be a primitive type in the JSON string but got `%s`", jsonObj.get("scene").toString()));
        }
        if (jsonObj.get("settle_alipay_logon_id") != null && !jsonObj.get("settle_alipay_logon_id").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `settle_alipay_logon_id` to be a primitive type in the JSON string but got `%s`", jsonObj.get("settle_alipay_logon_id").toString()));
        }
        if (jsonObj.get("shop_category") != null && !jsonObj.get("shop_category").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `shop_category` to be a primitive type in the JSON string but got `%s`", jsonObj.get("shop_category").toString()));
        }
        if (jsonObj.get("shop_id") != null && !jsonObj.get("shop_id").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `shop_id` to be a primitive type in the JSON string but got `%s`", jsonObj.get("shop_id").toString()));
        }
        if (jsonObj.get("shop_main_type") != null && !jsonObj.get("shop_main_type").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `shop_main_type` to be a primitive type in the JSON string but got `%s`", jsonObj.get("shop_main_type").toString()));
        }
        if (jsonObj.get("shop_name") != null && !jsonObj.get("shop_name").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `shop_name` to be a primitive type in the JSON string but got `%s`", jsonObj.get("shop_name").toString()));
        }
        if (jsonObj.get("store_id") != null && !jsonObj.get("store_id").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `store_id` to be a primitive type in the JSON string but got `%s`", jsonObj.get("store_id").toString()));
        }
    }
  
    public static class CustomTypeAdapterFactory implements TypeAdapterFactory {
      @SuppressWarnings("unchecked")
      @Override
      public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) {
         if (!AntMerchantExpandShopModifyModel.class.isAssignableFrom(type.getRawType())) {
           return null; // this class only serializes 'AntMerchantExpandShopModifyModel' and its subtypes
         }
         final TypeAdapter<JsonElement> elementAdapter = gson.getAdapter(JsonElement.class);
         final TypeAdapter<AntMerchantExpandShopModifyModel> thisAdapter
                          = gson.getDelegateAdapter(this, TypeToken.get(AntMerchantExpandShopModifyModel.class));
  
         return (TypeAdapter<T>) new TypeAdapter<AntMerchantExpandShopModifyModel>() {
             @Override
             public void write(JsonWriter out, AntMerchantExpandShopModifyModel 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 AntMerchantExpandShopModifyModel read(JsonReader in) throws IOException {
               JsonObject jsonObj = elementAdapter.read(in).getAsJsonObject();
               validateJsonObject(jsonObj);
               // store additional fields in the deserialized instance
               AntMerchantExpandShopModifyModel 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 AntMerchantExpandShopModifyModel given an JSON string
    *
    * @param jsonString JSON string
    * @return An instance of AntMerchantExpandShopModifyModel
    * @throws IOException if the JSON string is invalid with respect to AntMerchantExpandShopModifyModel
    */
    public static AntMerchantExpandShopModifyModel fromJson(String jsonString) throws IOException {
      return JSON.getGson().fromJson(jsonString, AntMerchantExpandShopModifyModel.class);
    }
  
   /**
    * Convert an instance of AntMerchantExpandShopModifyModel to an JSON string
    *
    * @return JSON string
    */
    public String toJson() {
      return JSON.getGson().toJson(this);
    }
  }
  
  