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.ShopBusinessTime;
  import com.alipay.v3.model.ShopExtInfo;
  import com.alipay.v3.model.ShopIndustryLicense;
  import com.alipay.v3.model.ShopRecommendInfo;
  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;
  
  /**
   * AntMerchantExpandShopQueryResponseModel
   */
  @javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen")
  public class AntMerchantExpandShopQueryResponseModel {
    public static final String SERIALIZED_NAME_ALIPAY_POIID = "alipay_poiid";
    @SerializedName(SERIALIZED_NAME_ALIPAY_POIID)
    private String alipayPoiid;
  
    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 List<ContactInfo> contactInfos = null;
  
    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_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_NEW_SHOP_CATEGORY = "new_shop_category";
    @SerializedName(SERIALIZED_NAME_NEW_SHOP_CATEGORY)
    private String newShopCategory;
  
    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_INFO_STATUS = "shop_info_status";
    @SerializedName(SERIALIZED_NAME_SHOP_INFO_STATUS)
    private String shopInfoStatus;
  
    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_SHOP_RECOMMEND_INFO = "shop_recommend_info";
    @SerializedName(SERIALIZED_NAME_SHOP_RECOMMEND_INFO)
    private ShopRecommendInfo shopRecommendInfo;
  
    public static final String SERIALIZED_NAME_SHOP_TYPE = "shop_type";
    @SerializedName(SERIALIZED_NAME_SHOP_TYPE)
    private String shopType;
  
    public static final String SERIALIZED_NAME_STORE_ID = "store_id";
    @SerializedName(SERIALIZED_NAME_STORE_ID)
    private String storeId;
  
    public AntMerchantExpandShopQueryResponseModel() { 
    }
  
    public AntMerchantExpandShopQueryResponseModel alipayPoiid(String alipayPoiid) {
      
      this.alipayPoiid = alipayPoiid;
      return this;
    }
  
     /**
     * 门店地址库 ID，按照一定的平台规则识别出的线下真实存在、真实经营的蚂蚁门店地址库 ID，将作用于服务商的返佣激励、商品/券等权益的公域分发。如平台未返回alipay_poiid，请在确认门店信息真实有效后，稍后再进行查询。
     * @return alipayPoiid
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "2022082900502055000000100000", value = "门店地址库 ID，按照一定的平台规则识别出的线下真实存在、真实经营的蚂蚁门店地址库 ID，将作用于服务商的返佣激励、商品/券等权益的公域分发。如平台未返回alipay_poiid，请在确认门店信息真实有效后，稍后再进行查询。")
  
    public String getAlipayPoiid() {
      return alipayPoiid;
    }
  
  
    public void setAlipayPoiid(String alipayPoiid) {
      this.alipayPoiid = alipayPoiid;
    }
  
  
    public AntMerchantExpandShopQueryResponseModel brandId(String brandId) {
      
      this.brandId = brandId;
      return this;
    }
  
     /**
     * 品牌id
     * @return brandId
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "20181026000001", value = "品牌id")
  
    public String getBrandId() {
      return brandId;
    }
  
  
    public void setBrandId(String brandId) {
      this.brandId = brandId;
    }
  
  
    public AntMerchantExpandShopQueryResponseModel 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 AntMerchantExpandShopQueryResponseModel businessTime(List<ShopBusinessTime> businessTime) {
      
      this.businessTime = businessTime;
      return this;
    }
  
    public AntMerchantExpandShopQueryResponseModel 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 AntMerchantExpandShopQueryResponseModel certImage(String certImage) {
      
      this.certImage = certImage;
      return this;
    }
  
     /**
     * 营业执照图片url。返回值为一个有访问时限的链接
     * @return certImage
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "https://mif-pub.alipayobjects.com/c6c0c7a1-b9d5-4e5d-b9d4-9eed39f00e65.jpg", value = "营业执照图片url。返回值为一个有访问时限的链接")
  
    public String getCertImage() {
      return certImage;
    }
  
  
    public void setCertImage(String certImage) {
      this.certImage = certImage;
    }
  
  
    public AntMerchantExpandShopQueryResponseModel certName(String certName) {
      
      this.certName = certName;
      return this;
    }
  
     /**
     * 营业执照名称，值为营业执照或统一社会信用代码证上的名称。
     * @return certName
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "xxxx小卖铺", value = "营业执照名称，值为营业执照或统一社会信用代码证上的名称。")
  
    public String getCertName() {
      return certName;
    }
  
  
    public void setCertName(String certName) {
      this.certName = certName;
    }
  
  
    public AntMerchantExpandShopQueryResponseModel 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 AntMerchantExpandShopQueryResponseModel certType(String certType) {
      
      this.certType = certType;
      return this;
    }
  
     /**
     * 证件类型，取值范围：201：营业执照；2011:多证合一(统一社会信用代码)。
     * @return certType
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "201", value = "证件类型，取值范围：201：营业执照；2011:多证合一(统一社会信用代码)。")
  
    public String getCertType() {
      return certType;
    }
  
  
    public void setCertType(String certType) {
      this.certType = certType;
    }
  
  
    public AntMerchantExpandShopQueryResponseModel contactInfos(List<ContactInfo> contactInfos) {
      
      this.contactInfos = contactInfos;
      return this;
    }
  
    public AntMerchantExpandShopQueryResponseModel addContactInfosItem(ContactInfo contactInfosItem) {
      if (this.contactInfos == null) {
        this.contactInfos = new ArrayList<>();
      }
      this.contactInfos.add(contactInfosItem);
      return this;
    }
  
     /**
     * 联系人信息。
     * @return contactInfos
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(value = "联系人信息。")
  
    public List<ContactInfo> getContactInfos() {
      return contactInfos;
    }
  
  
    public void setContactInfos(List<ContactInfo> contactInfos) {
      this.contactInfos = contactInfos;
    }
  
  
    public AntMerchantExpandShopQueryResponseModel 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 AntMerchantExpandShopQueryResponseModel 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 AntMerchantExpandShopQueryResponseModel extInfos(List<ShopExtInfo> extInfos) {
      
      this.extInfos = extInfos;
      return this;
    }
  
    public AntMerchantExpandShopQueryResponseModel addExtInfosItem(ShopExtInfo extInfosItem) {
      if (this.extInfos == null) {
        this.extInfos = new ArrayList<>();
      }
      this.extInfos.add(extInfosItem);
      return this;
    }
  
     /**
     * 扩展信息列表。key值需要向对应行业的bd进行申请。
     * @return extInfos
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(value = "扩展信息列表。key值需要向对应行业的bd进行申请。")
  
    public List<ShopExtInfo> getExtInfos() {
      return extInfos;
    }
  
  
    public void setExtInfos(List<ShopExtInfo> extInfos) {
      this.extInfos = extInfos;
    }
  
  
    public AntMerchantExpandShopQueryResponseModel industryInfo(List<MerchantShopIndustryInfo> industryInfo) {
      
      this.industryInfo = industryInfo;
      return this;
    }
  
    public AntMerchantExpandShopQueryResponseModel addIndustryInfoItem(MerchantShopIndustryInfo industryInfoItem) {
      if (this.industryInfo == null) {
        this.industryInfo = new ArrayList<>();
      }
      this.industryInfo.add(industryInfoItem);
      return this;
    }
  
     /**
     * 查询门店详情时，如果需要同时返回行业信息，需要设置入参中的need_industry_info&#x3D;1
     * @return industryInfo
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(value = "查询门店详情时，如果需要同时返回行业信息，需要设置入参中的need_industry_info=1")
  
    public List<MerchantShopIndustryInfo> getIndustryInfo() {
      return industryInfo;
    }
  
  
    public void setIndustryInfo(List<MerchantShopIndustryInfo> industryInfo) {
      this.industryInfo = industryInfo;
    }
  
  
    public AntMerchantExpandShopQueryResponseModel industryLicense(List<ShopIndustryLicense> industryLicense) {
      
      this.industryLicense = industryLicense;
      return this;
    }
  
    public AntMerchantExpandShopQueryResponseModel addIndustryLicenseItem(ShopIndustryLicense industryLicenseItem) {
      if (this.industryLicense == null) {
        this.industryLicense = new ArrayList<>();
      }
      this.industryLicense.add(industryLicenseItem);
      return this;
    }
  
     /**
     * 查询门店详情时，如果需要同时返回行业资质，需要设置入参中的need_industry_license&#x3D;1
     * @return industryLicense
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(value = "查询门店详情时，如果需要同时返回行业资质，需要设置入参中的need_industry_license=1")
  
    public List<ShopIndustryLicense> getIndustryLicense() {
      return industryLicense;
    }
  
  
    public void setIndustryLicense(List<ShopIndustryLicense> industryLicense) {
      this.industryLicense = industryLicense;
    }
  
  
    public AntMerchantExpandShopQueryResponseModel ipRoleId(String ipRoleId) {
      
      this.ipRoleId = ipRoleId;
      return this;
    }
  
     /**
     * 商户角色id，门店属于哪个商户角色。对于直连开店场景，为商户pid；对于间连开店场景（线上、线下、直付通），为商户smid。
     * @return ipRoleId
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "2088301155943087", value = "商户角色id，门店属于哪个商户角色。对于直连开店场景，为商户pid；对于间连开店场景（线上、线下、直付通），为商户smid。")
  
    public String getIpRoleId() {
      return ipRoleId;
    }
  
  
    public void setIpRoleId(String ipRoleId) {
      this.ipRoleId = ipRoleId;
    }
  
  
    public AntMerchantExpandShopQueryResponseModel legalCertNo(String legalCertNo) {
      
      this.legalCertNo = legalCertNo;
      return this;
    }
  
     /**
     * 法人身份证号。
     * @return legalCertNo
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "100100198811110001", value = "法人身份证号。")
  
    public String getLegalCertNo() {
      return legalCertNo;
    }
  
  
    public void setLegalCertNo(String legalCertNo) {
      this.legalCertNo = legalCertNo;
    }
  
  
    public AntMerchantExpandShopQueryResponseModel legalName(String legalName) {
      
      this.legalName = legalName;
      return this;
    }
  
     /**
     * 法人名称。
     * @return legalName
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "马云", value = "法人名称。")
  
    public String getLegalName() {
      return legalName;
    }
  
  
    public void setLegalName(String legalName) {
      this.legalName = legalName;
    }
  
  
    public AntMerchantExpandShopQueryResponseModel licenseAuthLetterImage(String licenseAuthLetterImage) {
      
      this.licenseAuthLetterImage = licenseAuthLetterImage;
      return this;
    }
  
     /**
     * 营业执照授权函。返回值为一个有访问时限的链接
     * @return licenseAuthLetterImage
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "https://mif-pub.alipayobjects.com/c6c0c7a1-b9d5-4e5d-b9d4-9eed39f00e65.jpg", value = "营业执照授权函。返回值为一个有访问时限的链接")
  
    public String getLicenseAuthLetterImage() {
      return licenseAuthLetterImage;
    }
  
  
    public void setLicenseAuthLetterImage(String licenseAuthLetterImage) {
      this.licenseAuthLetterImage = licenseAuthLetterImage;
    }
  
  
    public AntMerchantExpandShopQueryResponseModel 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 AntMerchantExpandShopQueryResponseModel newBusinessTime(List<ComplexBusinessTime> newBusinessTime) {
      
      this.newBusinessTime = newBusinessTime;
      return this;
    }
  
    public AntMerchantExpandShopQueryResponseModel 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 AntMerchantExpandShopQueryResponseModel newShopCategory(String newShopCategory) {
      
      this.newShopCategory = newShopCategory;
      return this;
    }
  
     /**
     * 新版门店类目标准二级类目code
     * @return newShopCategory
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "B0001", value = "新版门店类目标准二级类目code")
  
    public String getNewShopCategory() {
      return newShopCategory;
    }
  
  
    public void setNewShopCategory(String newShopCategory) {
      this.newShopCategory = newShopCategory;
    }
  
  
    public AntMerchantExpandShopQueryResponseModel outDoorImages(List<String> outDoorImages) {
      
      this.outDoorImages = outDoorImages;
      return this;
    }
  
    public AntMerchantExpandShopQueryResponseModel addOutDoorImagesItem(String outDoorImagesItem) {
      if (this.outDoorImages == null) {
        this.outDoorImages = new ArrayList<>();
      }
      this.outDoorImages.add(outDoorImagesItem);
      return this;
    }
  
     /**
     * 门头照，返回值为一个有访问时限的链接
     * @return outDoorImages
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "[\"https://mif-pub.alipayobjects.com/c6c0c7a1-b9d5-4e5d-b9d4-9eed39f00e65.jpg\"]", value = "门头照，返回值为一个有访问时限的链接")
  
    public List<String> getOutDoorImages() {
      return outDoorImages;
    }
  
  
    public void setOutDoorImages(List<String> outDoorImages) {
      this.outDoorImages = outDoorImages;
    }
  
  
    public AntMerchantExpandShopQueryResponseModel qualifications(List<IndustryQualificationInfo> qualifications) {
      
      this.qualifications = qualifications;
      return this;
    }
  
    public AntMerchantExpandShopQueryResponseModel 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 AntMerchantExpandShopQueryResponseModel 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 AntMerchantExpandShopQueryResponseModel 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 AntMerchantExpandShopQueryResponseModel shopCategory(String shopCategory) {
      
      this.shopCategory = shopCategory;
      return this;
    }
  
     /**
     * 店铺类目，取值参见文件中的三级门店类目&lt;a herf&#x3D;\&quot;https://mif-pub.alipayobjects.com/ShopCategory.xlsx\&quot;&gt;&lt;/a&gt;
     * @return shopCategory
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "1001", value = "店铺类目，取值参见文件中的三级门店类目<a herf=\"https://mif-pub.alipayobjects.com/ShopCategory.xlsx\"></a>")
  
    public String getShopCategory() {
      return shopCategory;
    }
  
  
    public void setShopCategory(String shopCategory) {
      this.shopCategory = shopCategory;
    }
  
  
    public AntMerchantExpandShopQueryResponseModel shopId(String shopId) {
      
      this.shopId = shopId;
      return this;
    }
  
     /**
     * 支付宝侧蚂蚁店铺 id
     * @return shopId
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "2018011900502000000005124744", value = "支付宝侧蚂蚁店铺 id")
  
    public String getShopId() {
      return shopId;
    }
  
  
    public void setShopId(String shopId) {
      this.shopId = shopId;
    }
  
  
    public AntMerchantExpandShopQueryResponseModel shopInfoStatus(String shopInfoStatus) {
      
      this.shopInfoStatus = shopInfoStatus;
      return this;
    }
  
     /**
     * 当前名称、地址、经纬度信息准确一致，可用于数字化经营场景消费(如商品、券、消费圈等场域的分发)，不影响门店支付结算
     * @return shopInfoStatus
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "01", value = "当前名称、地址、经纬度信息准确一致，可用于数字化经营场景消费(如商品、券、消费圈等场域的分发)，不影响门店支付结算")
  
    public String getShopInfoStatus() {
      return shopInfoStatus;
    }
  
  
    public void setShopInfoStatus(String shopInfoStatus) {
      this.shopInfoStatus = shopInfoStatus;
    }
  
  
    public AntMerchantExpandShopQueryResponseModel 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 AntMerchantExpandShopQueryResponseModel shopName(String shopName) {
      
      this.shopName = shopName;
      return this;
    }
  
     /**
     * 店铺名称。
     * @return shopName
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "肯德基中关村店", value = "店铺名称。")
  
    public String getShopName() {
      return shopName;
    }
  
  
    public void setShopName(String shopName) {
      this.shopName = shopName;
    }
  
  
    public AntMerchantExpandShopQueryResponseModel shopRecommendInfo(ShopRecommendInfo shopRecommendInfo) {
      
      this.shopRecommendInfo = shopRecommendInfo;
      return this;
    }
  
     /**
     * Get shopRecommendInfo
     * @return shopRecommendInfo
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(value = "")
  
    public ShopRecommendInfo getShopRecommendInfo() {
      return shopRecommendInfo;
    }
  
  
    public void setShopRecommendInfo(ShopRecommendInfo shopRecommendInfo) {
      this.shopRecommendInfo = shopRecommendInfo;
    }
  
  
    public AntMerchantExpandShopQueryResponseModel shopType(String shopType) {
      
      this.shopType = shopType;
      return this;
    }
  
     /**
     * 店铺经营类型
     * @return shopType
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "01", value = "店铺经营类型")
  
    public String getShopType() {
      return shopType;
    }
  
  
    public void setShopType(String shopType) {
      this.shopType = shopType;
    }
  
  
    public AntMerchantExpandShopQueryResponseModel storeId(String storeId) {
      
      this.storeId = storeId;
      return this;
    }
  
     /**
     * 商户侧门店编号。表示该门店在该商户角色id(直连pid，间连smid)下，由商户自己定义的外部门店编号。若未传入 shop_id  则本参数与与ip_role_id均必填。
     * @return storeId
    **/
    @javax.annotation.Nullable
    @ApiModelProperty(example = "NO0001", value = "商户侧门店编号。表示该门店在该商户角色id(直连pid，间连smid)下，由商户自己定义的外部门店编号。若未传入 shop_id  则本参数与与ip_role_id均必填。")
  
    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 AntMerchantExpandShopQueryResponseModel instance itself
     */
    public AntMerchantExpandShopQueryResponseModel 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;
      }
      AntMerchantExpandShopQueryResponseModel antMerchantExpandShopQueryResponseModel = (AntMerchantExpandShopQueryResponseModel) o;
      return Objects.equals(this.alipayPoiid, antMerchantExpandShopQueryResponseModel.alipayPoiid) &&
          Objects.equals(this.brandId, antMerchantExpandShopQueryResponseModel.brandId) &&
          Objects.equals(this.businessAddress, antMerchantExpandShopQueryResponseModel.businessAddress) &&
          Objects.equals(this.businessTime, antMerchantExpandShopQueryResponseModel.businessTime) &&
          Objects.equals(this.certImage, antMerchantExpandShopQueryResponseModel.certImage) &&
          Objects.equals(this.certName, antMerchantExpandShopQueryResponseModel.certName) &&
          Objects.equals(this.certNo, antMerchantExpandShopQueryResponseModel.certNo) &&
          Objects.equals(this.certType, antMerchantExpandShopQueryResponseModel.certType) &&
          Objects.equals(this.contactInfos, antMerchantExpandShopQueryResponseModel.contactInfos) &&
          Objects.equals(this.contactMobile, antMerchantExpandShopQueryResponseModel.contactMobile) &&
          Objects.equals(this.contactPhone, antMerchantExpandShopQueryResponseModel.contactPhone) &&
          Objects.equals(this.extInfos, antMerchantExpandShopQueryResponseModel.extInfos) &&
          Objects.equals(this.industryInfo, antMerchantExpandShopQueryResponseModel.industryInfo) &&
          Objects.equals(this.industryLicense, antMerchantExpandShopQueryResponseModel.industryLicense) &&
          Objects.equals(this.ipRoleId, antMerchantExpandShopQueryResponseModel.ipRoleId) &&
          Objects.equals(this.legalCertNo, antMerchantExpandShopQueryResponseModel.legalCertNo) &&
          Objects.equals(this.legalName, antMerchantExpandShopQueryResponseModel.legalName) &&
          Objects.equals(this.licenseAuthLetterImage, antMerchantExpandShopQueryResponseModel.licenseAuthLetterImage) &&
          Objects.equals(this.memo, antMerchantExpandShopQueryResponseModel.memo) &&
          Objects.equals(this.newBusinessTime, antMerchantExpandShopQueryResponseModel.newBusinessTime) &&
          Objects.equals(this.newShopCategory, antMerchantExpandShopQueryResponseModel.newShopCategory) &&
          Objects.equals(this.outDoorImages, antMerchantExpandShopQueryResponseModel.outDoorImages) &&
          Objects.equals(this.qualifications, antMerchantExpandShopQueryResponseModel.qualifications) &&
          Objects.equals(this.scene, antMerchantExpandShopQueryResponseModel.scene) &&
          Objects.equals(this.settleAlipayLogonId, antMerchantExpandShopQueryResponseModel.settleAlipayLogonId) &&
          Objects.equals(this.shopCategory, antMerchantExpandShopQueryResponseModel.shopCategory) &&
          Objects.equals(this.shopId, antMerchantExpandShopQueryResponseModel.shopId) &&
          Objects.equals(this.shopInfoStatus, antMerchantExpandShopQueryResponseModel.shopInfoStatus) &&
          Objects.equals(this.shopMainType, antMerchantExpandShopQueryResponseModel.shopMainType) &&
          Objects.equals(this.shopName, antMerchantExpandShopQueryResponseModel.shopName) &&
          Objects.equals(this.shopRecommendInfo, antMerchantExpandShopQueryResponseModel.shopRecommendInfo) &&
          Objects.equals(this.shopType, antMerchantExpandShopQueryResponseModel.shopType) &&
          Objects.equals(this.storeId, antMerchantExpandShopQueryResponseModel.storeId)&&
          Objects.equals(this.additionalProperties, antMerchantExpandShopQueryResponseModel.additionalProperties);
    }
  
    @Override
    public int hashCode() {
      return Objects.hash(alipayPoiid, brandId, businessAddress, businessTime, certImage, certName, certNo, certType, contactInfos, contactMobile, contactPhone, extInfos, industryInfo, industryLicense, ipRoleId, legalCertNo, legalName, licenseAuthLetterImage, memo, newBusinessTime, newShopCategory, outDoorImages, qualifications, scene, settleAlipayLogonId, shopCategory, shopId, shopInfoStatus, shopMainType, shopName, shopRecommendInfo, shopType, storeId, additionalProperties);
    }
  
    @Override
    public String toString() {
      StringBuilder sb = new StringBuilder();
      sb.append("class AntMerchantExpandShopQueryResponseModel {\n");
      sb.append("    alipayPoiid: ").append(toIndentedString(alipayPoiid)).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("    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("    newShopCategory: ").append(toIndentedString(newShopCategory)).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("    shopInfoStatus: ").append(toIndentedString(shopInfoStatus)).append("\n");
      sb.append("    shopMainType: ").append(toIndentedString(shopMainType)).append("\n");
      sb.append("    shopName: ").append(toIndentedString(shopName)).append("\n");
      sb.append("    shopRecommendInfo: ").append(toIndentedString(shopRecommendInfo)).append("\n");
      sb.append("    shopType: ").append(toIndentedString(shopType)).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("alipay_poiid");
      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("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("new_shop_category");
      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_info_status");
      openapiFields.add("shop_main_type");
      openapiFields.add("shop_name");
      openapiFields.add("shop_recommend_info");
      openapiFields.add("shop_type");
      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 AntMerchantExpandShopQueryResponseModel
    */
    public static void validateJsonObject(JsonObject jsonObj) throws IOException {
        if (jsonObj == null) {
          if (AntMerchantExpandShopQueryResponseModel.openapiRequiredFields.isEmpty()) {
            return;
          } else { // has required fields
            throw new IllegalArgumentException(String.format("The required field(s) %s in AntMerchantExpandShopQueryResponseModel is not found in the empty JSON string", AntMerchantExpandShopQueryResponseModel.openapiRequiredFields.toString()));
          }
        }
        if (jsonObj.get("alipay_poiid") != null && !jsonObj.get("alipay_poiid").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `alipay_poiid` to be a primitive type in the JSON string but got `%s`", jsonObj.get("alipay_poiid").toString()));
        }
        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()));
        }
        JsonArray jsonArraycontactInfos = jsonObj.getAsJsonArray("contact_infos");
        if (jsonArraycontactInfos != null) {
          // ensure the json data is an array
          if (!jsonObj.get("contact_infos").isJsonArray()) {
            throw new IllegalArgumentException(String.format("Expected the field `contact_infos` to be an array in the JSON string but got `%s`", jsonObj.get("contact_infos").toString()));
          }
  
          // validate the optional field `contact_infos` (array)
          for (int i = 0; i < jsonArraycontactInfos.size(); i++) {
            ContactInfo.validateJsonObject(jsonArraycontactInfos.get(i).getAsJsonObject());
          };
        }
        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()));
        }
        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());
          };
        }
        if (jsonObj.get("new_shop_category") != null && !jsonObj.get("new_shop_category").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `new_shop_category` to be a primitive type in the JSON string but got `%s`", jsonObj.get("new_shop_category").toString()));
        }
        // 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_info_status") != null && !jsonObj.get("shop_info_status").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `shop_info_status` to be a primitive type in the JSON string but got `%s`", jsonObj.get("shop_info_status").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()));
        }
        // validate the optional field `shop_recommend_info`
        if (jsonObj.getAsJsonObject("shop_recommend_info") != null) {
          ShopRecommendInfo.validateJsonObject(jsonObj.getAsJsonObject("shop_recommend_info"));
        }
        if (jsonObj.get("shop_type") != null && !jsonObj.get("shop_type").isJsonPrimitive()) {
          throw new IllegalArgumentException(String.format("Expected the field `shop_type` to be a primitive type in the JSON string but got `%s`", jsonObj.get("shop_type").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 (!AntMerchantExpandShopQueryResponseModel.class.isAssignableFrom(type.getRawType())) {
           return null; // this class only serializes 'AntMerchantExpandShopQueryResponseModel' and its subtypes
         }
         final TypeAdapter<JsonElement> elementAdapter = gson.getAdapter(JsonElement.class);
         final TypeAdapter<AntMerchantExpandShopQueryResponseModel> thisAdapter
                          = gson.getDelegateAdapter(this, TypeToken.get(AntMerchantExpandShopQueryResponseModel.class));
  
         return (TypeAdapter<T>) new TypeAdapter<AntMerchantExpandShopQueryResponseModel>() {
             @Override
             public void write(JsonWriter out, AntMerchantExpandShopQueryResponseModel 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 AntMerchantExpandShopQueryResponseModel read(JsonReader in) throws IOException {
               JsonObject jsonObj = elementAdapter.read(in).getAsJsonObject();
               validateJsonObject(jsonObj);
               // store additional fields in the deserialized instance
               AntMerchantExpandShopQueryResponseModel 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 AntMerchantExpandShopQueryResponseModel given an JSON string
    *
    * @param jsonString JSON string
    * @return An instance of AntMerchantExpandShopQueryResponseModel
    * @throws IOException if the JSON string is invalid with respect to AntMerchantExpandShopQueryResponseModel
    */
    public static AntMerchantExpandShopQueryResponseModel fromJson(String jsonString) throws IOException {
      return JSON.getGson().fromJson(jsonString, AntMerchantExpandShopQueryResponseModel.class);
    }
  
   /**
    * Convert an instance of AntMerchantExpandShopQueryResponseModel to an JSON string
    *
    * @return JSON string
    */
    public String toJson() {
      return JSON.getGson().toJson(this);
    }
  }
  
  