KKSU
2024-05-11 9533bf3b42f2053de299959f0d8ac201c478657c
香港新环境
5 files modified
9 files added
366 ■■■■ changed files
src/main/java/cc/mrbird/febs/dapp/soccer/controller/SoccerController.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/soccer/entity/Country.java 17 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/soccer/entity/Coverage.java 28 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/soccer/entity/Fixtures.java 17 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/soccer/entity/JsonResponse.java 4 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/soccer/entity/LeaguesInfo.java 19 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/soccer/entity/LeaguesResponse.java 37 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/soccer/entity/Season.java 19 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/soccer/entity/SoccerLeagues.java 6 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/soccer/entity/SoccerTimezone.java 12 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/soccer/entity/league.java 20 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/soccer/mapper/SoccerTimezoneMapper.java 7 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/soccer/service/Impl/CountryServiceImpl.java 161 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/soccer/util/SoccerResponseUtil.java 17 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/soccer/controller/SoccerController.java
@@ -34,8 +34,6 @@
    @ApiOperation(value = "获取联赛", notes = "获取联赛")
    @PostMapping(value = "/leagues")
    public FebsResponse leagues(LeaguesApiDto leaguesApiDto) {
        return countryService.leagues(leaguesApiDto);
    }
}
src/main/java/cc/mrbird/febs/dapp/soccer/entity/Country.java
New file
@@ -0,0 +1,17 @@
package cc.mrbird.febs.dapp.soccer.entity;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
@Data
public class Country {
    @JsonProperty("name")
    private String name;
    @JsonProperty("code")
    private String code;
    @JsonProperty("flag")
    private String flag;
}
src/main/java/cc/mrbird/febs/dapp/soccer/entity/Coverage.java
New file
@@ -0,0 +1,28 @@
package cc.mrbird.febs.dapp.soccer.entity;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
@Data
public class Coverage {
    @JsonProperty("fixtures")
    private Fixtures fixtures;
    @JsonProperty("standings")
    private boolean standings;
    @JsonProperty("players")
    private boolean players;
    @JsonProperty("top_scorers")
    private boolean top_scorers;
    @JsonProperty("top_assists")
    private boolean top_assists;
    @JsonProperty("top_cards")
    private boolean top_cards;
    @JsonProperty("injuries")
    private boolean injuries;
    @JsonProperty("predictions")
    private boolean predictions;
    @JsonProperty("odds")
    private boolean odds;
}
src/main/java/cc/mrbird/febs/dapp/soccer/entity/Fixtures.java
New file
@@ -0,0 +1,17 @@
package cc.mrbird.febs.dapp.soccer.entity;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
@Data
public class Fixtures {
    @JsonProperty("events")
    private boolean events;
    @JsonProperty("lineups")
    private boolean lineups;
    @JsonProperty("statistics_fixtures")
    private boolean statistics_fixtures;
    @JsonProperty("statistics_players")
    private boolean statistics_players;
}
src/main/java/cc/mrbird/febs/dapp/soccer/entity/JsonResponse.java
@@ -10,7 +10,7 @@
    private String get;
    @JsonProperty("parameters")
    private List<Object> parameters;
    private Object parameters;
    @JsonProperty("errors")
    private List<Object> errors;
@@ -22,7 +22,7 @@
    private Paging paging;
    @JsonProperty("response")
    private List<String> response;
    private List<Object> response;
    public static class Paging {
src/main/java/cc/mrbird/febs/dapp/soccer/entity/LeaguesInfo.java
New file
@@ -0,0 +1,19 @@
package cc.mrbird.febs.dapp.soccer.entity;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.util.List;
@Data
public class LeaguesInfo {
    @JsonProperty("league")
    private league league;
    @JsonProperty("country")
    private Country country;
    @JsonProperty("seasons")
    private List<Season> seasons;
}
src/main/java/cc/mrbird/febs/dapp/soccer/entity/LeaguesResponse.java
New file
@@ -0,0 +1,37 @@
package cc.mrbird.febs.dapp.soccer.entity;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.util.List;
@Data
public class LeaguesResponse {
    @JsonProperty("get")
    private String get;
    @JsonProperty("parameters")
    private Object parameters;
    @JsonProperty("errors")
    private List<Object> errors;
    @JsonProperty("results")
    private int results;
    @JsonProperty("paging")
    private JsonResponse.Paging paging;
    @JsonProperty("response")
    private List<LeaguesInfo> response;
    public static class Paging {
        @JsonProperty("current")
        private int current;
        @JsonProperty("total")
        private int total;
    }
}
src/main/java/cc/mrbird/febs/dapp/soccer/entity/Season.java
New file
@@ -0,0 +1,19 @@
package cc.mrbird.febs.dapp.soccer.entity;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
@Data
public class Season {
    @JsonProperty("year")
    private Integer year;
    @JsonProperty("start")
    private String start;
    @JsonProperty("end")
    private String end;
    @JsonProperty("current")
    private boolean current;
    @JsonProperty("coverage")
    private Coverage coverage;
}
src/main/java/cc/mrbird/febs/dapp/soccer/entity/SoccerLeagues.java
@@ -16,4 +16,10 @@
    private String leaguesLogo;
    private String countryName;
    private String countryCode;
    private String countryFlag;
}
src/main/java/cc/mrbird/febs/dapp/soccer/entity/SoccerTimezone.java
New file
@@ -0,0 +1,12 @@
package cc.mrbird.febs.dapp.soccer.entity;
import cc.mrbird.febs.common.entity.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@Data
@TableName("soccer_timezone")
public class SoccerTimezone extends BaseEntity {
    private String timezoneName;
}
src/main/java/cc/mrbird/febs/dapp/soccer/entity/league.java
New file
@@ -0,0 +1,20 @@
package cc.mrbird.febs.dapp.soccer.entity;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
@Data
public class league {
    @JsonProperty("id")
    private Integer id;
    @JsonProperty("name")
    private String name;
    @JsonProperty("type")
    private String type;
    @JsonProperty("logo")
    private String logo;
}
src/main/java/cc/mrbird/febs/dapp/soccer/mapper/SoccerTimezoneMapper.java
New file
@@ -0,0 +1,7 @@
package cc.mrbird.febs.dapp.soccer.mapper;
import cc.mrbird.febs.dapp.soccer.entity.SoccerTimezone;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface SoccerTimezoneMapper extends BaseMapper<SoccerTimezone> {
}
src/main/java/cc/mrbird/febs/dapp/soccer/service/Impl/CountryServiceImpl.java
@@ -1,19 +1,16 @@
package cc.mrbird.febs.dapp.soccer.service.Impl;
import cc.mrbird.febs.common.contants.SoccerContants;
import cc.mrbird.febs.common.entity.FebsResponse;
import cc.mrbird.febs.dapp.soccer.dto.LeaguesApiDto;
import cc.mrbird.febs.dapp.soccer.entity.JsonResponse;
import cc.mrbird.febs.dapp.soccer.entity.SoccerCountries;
import cc.mrbird.febs.dapp.soccer.entity.SoccerLeagues;
import cc.mrbird.febs.dapp.soccer.entity.*;
import cc.mrbird.febs.dapp.soccer.mapper.SoccerCountriesMapper;
import cc.mrbird.febs.dapp.soccer.mapper.SoccerLeaguesMapper;
import cc.mrbird.febs.dapp.soccer.mapper.SoccerTimezoneMapper;
import cc.mrbird.febs.dapp.soccer.service.CountryService;
import cc.mrbird.febs.dapp.soccer.util.SoccerResponseUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -35,21 +32,24 @@
    private final SoccerCountriesMapper soccerCountriesMapper;
    private final SoccerLeaguesMapper soccerLeaguesMapper;
    private final SoccerTimezoneMapper soccerTimezoneMapper;
    @Override
    public FebsResponse countries() {
        HttpResponse<String> response = null;
        HttpResponse<String> httpResponse = null;
        try {
            response = Unirest.get("http://v3.football.api-sports.io/countries")
            httpResponse = Unirest.get("http://v3.football.api-sports.io/countries")
                    .header("x-rapidapi-key", "87f8d87d629d1704ba49622cb978eb81")
                    .header("x-rapidapi-host", "v3.football.api-sports.io").asString();
        } catch (UnirestException e) {
            e.printStackTrace();
        }
        JSONArray jsonArray = SoccerResponseUtil.getResponseToJSONArray(response);
        if(CollUtil.isNotEmpty(jsonArray)){
            for(Object list : jsonArray){
        JsonResponse jsonResponse = SoccerResponseUtil.getJsonResponse(httpResponse);
        if(ObjectUtil.isNotEmpty(jsonResponse)){
            List<Object> responses = jsonResponse.getResponse();
            if(CollUtil.isNotEmpty(responses)){
                for(Object list : responses){
                JSONObject jsonObject = JSONUtil.parseObj(list);
                String code = SoccerResponseUtil.objectToStr(jsonObject.get("code"));
                List<SoccerCountries> soccerCountryList = soccerCountriesMapper.selectList(new QueryWrapper<SoccerCountries>().eq("code", code));
@@ -63,19 +63,20 @@
                soccerCountriesMapper.insert(soccerCountries);
            }
        }
        return new FebsResponse().success();
        }
        return new FebsResponse().success().data(jsonResponse);
    }
    @Override
    public FebsResponse leagues(LeaguesApiDto leaguesApiDto) {
        HttpResponse<String> response = null;
        HttpResponse<String> httpResponse = null;
        int season = ObjectUtil.isEmpty(leaguesApiDto.getSeason()) ? DateUtil.date().year() : leaguesApiDto.getSeason();
        String current = ObjectUtil.isEmpty(leaguesApiDto.getCurrent()) ? "true" : leaguesApiDto.getCurrent();
        try {
            /**
             *  https://v3.football.api-sports.io/leagues?season=2023¤t=true
             */
            response = Unirest.get(" https://v3.football.api-sports.io/leagues")
            httpResponse = Unirest.get(" https://v3.football.api-sports.io/leagues")
                    .header("x-rapidapi-key", "87f8d87d629d1704ba49622cb978eb81")
                    .header("x-rapidapi-host", "v3.football.api-sports.io")
                    .queryString("season",season)
@@ -85,81 +86,121 @@
            e.printStackTrace();
        }
        JSONArray jsonArray = SoccerResponseUtil.getResponseToJSONArray(response);
        if(CollUtil.isNotEmpty(jsonArray)){
            for(Object list : jsonArray){
                JSONObject parseObj1 = JSONUtil.parseObj(list);
                Object leagueObj = parseObj1.get("league");
                JSONObject parseObjLeague = JSONUtil.parseObj(leagueObj);
                JSONObject leagueStr = JSONUtil.parseObj(parseObjLeague);
        LeaguesResponse leaguesResponse = SoccerResponseUtil.getLeaguesResponse(httpResponse);
        if(ObjectUtil.isNotEmpty(leaguesResponse)){
            List<LeaguesInfo> responses = leaguesResponse.getResponse();
            if(CollUtil.isNotEmpty(responses)){
                for(LeaguesInfo leaguesInfo : responses){
                Integer leaguesId = SoccerResponseUtil.objectToInteger(leagueStr.get("id"));
                    SoccerLeagues soccerLeagues = new SoccerLeagues();
                    Integer leaguesId = SoccerResponseUtil.objectToInteger(leaguesInfo.getLeague().getId());
                List<SoccerLeagues> soccerLeaguesList = soccerLeaguesMapper.selectList(new QueryWrapper<SoccerLeagues>().eq("leagues_id", leaguesId));
                if(CollUtil.isNotEmpty(soccerLeaguesList)){
                    continue;
                }
                SoccerLeagues soccerLeagues = new SoccerLeagues();
                soccerLeagues.setLeaguesId(SoccerResponseUtil.objectToInteger(leagueStr.get("id")));
                soccerLeagues.setLeaguesName(SoccerResponseUtil.objectToStr(leagueStr.get("name")));
                soccerLeagues.setLeaguesType(SoccerResponseUtil.objectToStr(leagueStr.get("type")));
                soccerLeagues.setLeaguesLogo(SoccerResponseUtil.objectToStr(leagueStr.get("logo")));
                    soccerLeagues.setLeaguesId(SoccerResponseUtil.objectToInteger(leaguesInfo.getLeague().getId()));
                    soccerLeagues.setLeaguesName(SoccerResponseUtil.objectToStr(leaguesInfo.getLeague().getName()));
                    soccerLeagues.setLeaguesType(SoccerResponseUtil.objectToStr(leaguesInfo.getLeague().getType()));
                    soccerLeagues.setLeaguesLogo(SoccerResponseUtil.objectToStr(leaguesInfo.getLeague().getLogo()));
                    soccerLeagues.setCountryName(SoccerResponseUtil.objectToStr(leaguesInfo.getCountry().getName()));
                    soccerLeagues.setCountryCode(SoccerResponseUtil.objectToStr(leaguesInfo.getCountry().getCode()));
                    soccerLeagues.setCountryFlag(SoccerResponseUtil.objectToStr(leaguesInfo.getCountry().getFlag()));
                soccerLeaguesMapper.insert(soccerLeagues);
            }
        }
        return new FebsResponse().success();
        }
        return new FebsResponse().success().data(leaguesResponse);
    }
    @Override
    public FebsResponse timezone() {
        HttpResponse<String> response = null;
        HttpResponse<String> httpResponse = null;
        try {
            response = Unirest.get("https://v3.football.api-sports.io/timezone")
            httpResponse = Unirest.get("https://v3.football.api-sports.io/timezone")
                    .header("x-rapidapi-key", "87f8d87d629d1704ba49622cb978eb81")
                    .header("x-rapidapi-host", "v3.football.api-sports.io").asString();
        } catch (UnirestException e) {
            e.printStackTrace();
        }
        JsonResponse jsonResponse = SoccerResponseUtil.getJsonResponse(response);
        JsonResponse jsonResponse = SoccerResponseUtil.getJsonResponse(httpResponse);
        if(ObjectUtil.isNotEmpty(jsonResponse)){
            List<Object> responses = jsonResponse.getResponse();
            if(CollUtil.isNotEmpty(jsonResponse.getResponse())){
                for(Object timezoneName : responses){
                    SoccerTimezone soccerTimezone = new SoccerTimezone();
                    soccerTimezone.setTimezoneName(SoccerResponseUtil.objectToStr(timezoneName));
                    soccerTimezoneMapper.insert(soccerTimezone);
                }
            }
        }
        log.info(jsonResponse.getResponse().get(1));
//        JSONArray jsonArray = SoccerResponseUtil.getResponseToJSONArray(response);
//        if(CollUtil.isNotEmpty(jsonArray)){
//            for(Object list : jsonArray){
//                JSONObject jsonObject = JSONUtil.parseObj(list);
//                String code = SoccerResponseUtil.objectToStr(jsonObject.get("code"));
//                List<SoccerCountries> soccerCountryList = soccerCountriesMapper.selectList(new QueryWrapper<SoccerCountries>().eq("code", code));
//                if(CollUtil.isNotEmpty(soccerCountryList)){
//                    continue;
//                }
//                SoccerCountries soccerCountries = new SoccerCountries();
//                soccerCountries.setName(SoccerResponseUtil.objectToStr(jsonObject.get("code")));
//                soccerCountries.setCode(SoccerResponseUtil.objectToStr(jsonObject.get("name")));
//                soccerCountries.setFlag(SoccerResponseUtil.objectToStr(jsonObject.get("flag")));
//                soccerCountriesMapper.insert(soccerCountries);
//            }
//        }
        return new FebsResponse().success();
        return new FebsResponse().success().data(jsonResponse);
    }
    public static void main(String[] args) {
        StringBuffer stringBuffer = new StringBuffer("{\"get\":\"timezone\",\"parameters\":[],\"errors\":[],\"results\":427,\"paging\":{\"current\":1,\"total\":1},\"response\":[\"Africa\\/Abidjan\",\"Africa\\/Accra\",\"Africa\\/Addis_Ababa\",\"Africa\\/Algiers\",\"Africa\\/Asmara\",\"Africa\\/Bamako\",\"Africa\\/Bangui\",\"Africa\\/Banjul\",\"Africa\\/Bissau\",\"Africa\\/Blantyre\",\"Africa\\/Brazzaville\",\"Africa\\/Bujumbura\",\"Africa\\/Cairo\",\"Africa\\/Casablanca\",\"Africa\\/Ceuta\",\"Africa\\/Conakry\",\"Africa\\/Dakar\",\"Africa\\/Dar_es_Salaam\",\"Africa\\/Djibouti\",\"Africa\\/Douala\",\"Africa\\/El_Aaiun\",\"Africa\\/Freetown\",\"Africa\\/Gaborone\",\"Africa\\/Harare\",\"Africa\\/Johannesburg\",\"Africa\\/Juba\",\"Africa\\/Kampala\",\"Africa\\/Khartoum\",\"Africa\\/Kigali\",\"Africa\\/Kinshasa\",\"Africa\\/Lagos\",\"Africa\\/Libreville\",\"Africa\\/Lome\",\"Africa\\/Luanda\",\"Africa\\/Lubumbashi\",\"Africa\\/Lusaka\",\"Africa\\/Malabo\",\"Africa\\/Maputo\",\"Africa\\/Maseru\",\"Africa\\/Mbabane\",\"Africa\\/Mogadishu\",\"Africa\\/Monrovia\",\"Africa\\/Nairobi\",\"Africa\\/Ndjamena\",\"Africa\\/Niamey\",\"Africa\\/Nouakchott\",\"Africa\\/Ouagadougou\",\"Africa\\/Porto-Novo\",\"Africa\\/Sao_Tome\",\"Africa\\/Tripoli\",\"Africa\\/Tunis\",\"Africa\\/Windhoek\",\"America\\/Adak\",\"America\\/Anchorage\",\"America\\/Anguilla\",\"America\\/Antigua\",\"America\\/Araguaina\",\"America\\/Argentina\\/Buenos_Aires\",\"America\\/Argentina\\/Catamarca\",\"America\\/Argentina\\/Cordoba\",\"America\\/Argentina\\/Jujuy\",\"America\\/Argentina\\/La_Rioja\",\"America\\/Argentina\\/Mendoza\",\"America\\/Argentina\\/Rio_Gallegos\",\"America\\/Argentina\\/Salta\",\"America\\/Argentina\\/San_Juan\",\"America\\/Argentina\\/San_Luis\",\"America\\/Argentina\\/Tucuman\",\"America\\/Argentina\\/Ushuaia\",\"America\\/Aruba\",\"America\\/Asuncion\",\"America\\/Atikokan\",\"America\\/Bahia\",\"America\\/Bahia_Banderas\",\"America\\/Barbados\",\"America\\/Belem\",\"America\\/Belize\",\"America\\/Blanc-Sablon\",\"America\\/Boa_Vista\",\"America\\/Bogota\",\"America\\/Boise\",\"America\\/Cambridge_Bay\",\"America\\/Campo_Grande\",\"America\\/Cancun\",\"America\\/Caracas\",\"America\\/Cayenne\",\"America\\/Cayman\",\"America\\/Chicago\",\"America\\/Chihuahua\",\"America\\/Costa_Rica\",\"America\\/Creston\",\"America\\/Cuiaba\",\"America\\/Curacao\",\"America\\/Danmarkshavn\",\"America\\/Dawson\",\"America\\/Dawson_Creek\",\"America\\/Denver\",\"America\\/Detroit\",\"America\\/Dominica\",\"America\\/Edmonton\",\"America\\/Eirunepe\",\"America\\/El_Salvador\",\"America\\/Fort_Nelson\",\"America\\/Fortaleza\",\"America\\/Glace_Bay\",\"America\\/Godthab\",\"America\\/Goose_Bay\",\"America\\/Grand_Turk\",\"America\\/Grenada\",\"America\\/Guadeloupe\",\"America\\/Guatemala\",\"America\\/Guayaquil\",\"America\\/Guyana\",\"America\\/Halifax\",\"America\\/Havana\",\"America\\/Hermosillo\",\"America\\/Indiana\\/Indianapolis\",\"America\\/Indiana\\/Knox\",\"America\\/Indiana\\/Marengo\",\"America\\/Indiana\\/Petersburg\",\"America\\/Indiana\\/Tell_City\",\"America\\/Indiana\\/Vevay\",\"America\\/Indiana\\/Vincennes\",\"America\\/Indiana\\/Winamac\",\"America\\/Inuvik\",\"America\\/Iqaluit\",\"America\\/Jamaica\",\"America\\/Juneau\",\"America\\/Kentucky\\/Louisville\",\"America\\/Kentucky\\/Monticello\",\"America\\/Kralendijk\",\"America\\/La_Paz\",\"America\\/Lima\",\"America\\/Los_Angeles\",\"America\\/Lower_Princes\",\"America\\/Maceio\",\"America\\/Managua\",\"America\\/Manaus\",\"America\\/Marigot\",\"America\\/Martinique\",\"America\\/Matamoros\",\"America\\/Mazatlan\",\"America\\/Menominee\",\"America\\/Merida\",\"America\\/Metlakatla\",\"America\\/Mexico_City\",\"America\\/Miquelon\",\"America\\/Moncton\",\"America\\/Monterrey\",\"America\\/Montevideo\",\"America\\/Montserrat\",\"America\\/Nassau\",\"America\\/New_York\",\"America\\/Nipigon\",\"America\\/Nome\",\"America\\/Noronha\",\"America\\/North_Dakota\\/Beulah\",\"America\\/North_Dakota\\/Center\",\"America\\/North_Dakota\\/New_Salem\",\"America\\/Ojinaga\",\"America\\/Panama\",\"America\\/Pangnirtung\",\"America\\/Paramaribo\",\"America\\/Phoenix\",\"America\\/Port-au-Prince\",\"America\\/Port_of_Spain\",\"America\\/Porto_Velho\",\"America\\/Puerto_Rico\",\"America\\/Punta_Arenas\",\"America\\/Rainy_River\",\"America\\/Rankin_Inlet\",\"America\\/Recife\",\"America\\/Regina\",\"America\\/Resolute\",\"America\\/Rio_Branco\",\"America\\/Santarem\",\"America\\/Santiago\",\"America\\/Santo_Domingo\",\"America\\/Sao_Paulo\",\"America\\/Scoresbysund\",\"America\\/Sitka\",\"America\\/St_Barthelemy\",\"America\\/St_Johns\",\"America\\/St_Kitts\",\"America\\/St_Lucia\",\"America\\/St_Thomas\",\"America\\/St_Vincent\",\"America\\/Swift_Current\",\"America\\/Tegucigalpa\",\"America\\/Thule\",\"America\\/Thunder_Bay\",\"America\\/Tijuana\",\"America\\/Toronto\",\"America\\/Tortola\",\"America\\/Vancouver\",\"America\\/Whitehorse\",\"America\\/Winnipeg\",\"America\\/Yakutat\",\"America\\/Yellowknife\",\"Antarctica\\/Casey\",\"Antarctica\\/Davis\",\"Antarctica\\/DumontDUrville\",\"Antarctica\\/Macquarie\",\"Antarctica\\/Mawson\",\"Antarctica\\/McMur\",\"Antarctica\\/PalmerAnta\",\"Antarctica\\/Rothera\",\"Antarctica\\/Syowa\",\"Antarctica\\/Troll\",\"Antarctica\\/Vostok\",\"Arctic\\/Longyearbyen\",\"Asia\\/Aden\",\"Asia\\/Almaty\",\"Asia\\/Amman\",\"Asia\\/Anadyr\",\"Asia\\/Aqtau\",\"Asia\\/Aqtobe\",\"Asia\\/Ashgabat\",\"Asia\\/Atyrau\",\"Asia\\/Baghdad\",\"Asia\\/Bahrain\",\"Asia\\/Baku\",\"Asia\\/Bangkok\",\"Asia\\/Barnaul\",\"Asia\\/Beirut\",\"Asia\\/Bishkek\",\"Asia\\/Brunei\",\"Asia\\/Calcutta\",\"Asia\\/Chita\",\"Asia\\/Choibalsan\",\"Asia\\/Colombo\",\"Asia\\/Damascus\",\"Asia\\/Dhaka\",\"Asia\\/Dili\",\"Asia\\/Dubai\",\"Asia\\/Dushanbe\",\"Asia\\/Famagusta\",\"Asia\\/Gaza\",\"Asia\\/Hebron\",\"Asia\\/Ho_Chi_Minh\",\"Asia\\/Hong_Kong\",\"Asia\\/Hovd\",\"Asia\\/Irkutsk\",\"Asia\\/Jakarta\",\"Asia\\/Jayapura\",\"Asia\\/Jerusalem\",\"Asia\\/Kabul\",\"Asia\\/Kamchatka\",\"Asia\\/Karachi\",\"Asia\\/Kathmandu\",\"Asia\\/Khandyga\",\"Asia\\/Kolkata\",\"Asia\\/Krasnoyarsk\",\"Asia\\/Kuala_Lumpur\",\"Asia\\/Kuching\",\"Asia\\/Kuwait\",\"Asia\\/Macau\",\"Asia\\/Magadan\",\"Asia\\/Makassar\",\"Asia\\/Manila\",\"Asia\\/Muscat\",\"Asia\\/Nicosia\",\"Asia\\/Novokuznetsk\",\"Asia\\/Novosibirsk\",\"Asia\\/Omsk\",\"Asia\\/Oral\",\"Asia\\/Phnom_Penh\",\"Asia\\/Pontianak\",\"Asia\\/Pyongyang\",\"Asia\\/Qatar\",\"Asia\\/Qostanay\",\"Asia\\/Qyzylorda\",\"Asia\\/Riyadh\",\"Asia\\/Saigon\",\"Asia\\/Sakhalin\",\"Asia\\/Samarkand\",\"Asia\\/Seoul\",\"Asia\\/Shanghai\",\"Asia\\/Singapore\",\"Asia\\/Srednekolymsk\",\"Asia\\/Taipei\",\"Asia\\/Tashkent\",\"Asia\\/Tbilisi\",\"Asia\\/Tehran\",\"Asia\\/Thimphu\",\"Asia\\/Tokyo\",\"Asia\\/Tomsk\",\"Asia\\/Ulaanbaatar\",\"Asia\\/Urumqi\",\"Asia\\/Ust-Nera\",\"Asia\\/Vientiane\",\"Asia\\/Vladivostok\",\"Asia\\/Yakutsk\",\"Asia\\/Yangon\",\"Asia\\/Yekaterinburg\",\"Asia\\/Yerevan\",\"Atlantic\\/Azores\",\"Atlantic\\/Bermuda\",\"Atlantic\\/Canary\",\"Atlantic\\/Cape_Verde\",\"Atlantic\\/Faroe\",\"Atlantic\\/Madeira\",\"Atlantic\\/Reykjavik\",\"Atlantic\\/South_Georgia\",\"Atlantic\\/St_Helena\",\"Atlantic\\/Stanley\",\"Australia\\/Adelaide\",\"Australia\\/Brisbane\",\"Australia\\/Broken_Hill\",\"Australia\\/Currie\",\"Australia\\/Darwin\",\"Australia\\/Eucla\",\"Australia\\/Hobart\",\"Australia\\/Lindeman\",\"Australia\\/Lord_Howe\",\"Australia\\/Melbourne\",\"Australia\\/Perth\",\"Australia\\/Sydney\",\"Europe\\/Amsterdam\",\"Europe\\/Andorra\",\"Europe\\/Astrakhan\",\"Europe\\/Athens\",\"Europe\\/Belgrade\",\"Europe\\/Berlin\",\"Europe\\/Bratislava\",\"Europe\\/Brussels\",\"Europe\\/Bucharest\",\"Europe\\/Budapest\",\"Europe\\/Busingen\",\"Europe\\/Chisinau\",\"Europe\\/Copenhagen\",\"Europe\\/Dublin\",\"Europe\\/Gibraltar\",\"Europe\\/Guernsey\",\"Europe\\/Helsinki\",\"Europe\\/Isle_of_Man\",\"Europe\\/Istanbul\",\"Europe\\/Jersey\",\"Europe\\/Kaliningrad\",\"Europe\\/Kiev\",\"Europe\\/Kirov\",\"Europe\\/Lisbon\",\"Europe\\/Ljubljana\",\"Europe\\/London\",\"Europe\\/Luxembourg\",\"Europe\\/Madrid\",\"Europe\\/Malta\",\"Europe\\/Mariehamn\",\"Europe\\/Minsk\",\"Europe\\/Monaco\",\"Europe\\/Moscow\",\"Europe\\/Oslo\",\"Europe\\/Paris\",\"Europe\\/Podgorica\",\"Europe\\/Prague\",\"Europe\\/Riga\",\"Europe\\/Rome\",\"Europe\\/Samara\",\"Europe\\/San_Marino\",\"Europe\\/Sarajevo\",\"Europe\\/Saratov\",\"Europe\\/Simferopol\",\"Europe\\/Skopje\",\"Europe\\/Sofia\",\"Europe\\/Stockholm\",\"Europe\\/Tallinn\",\"Europe\\/Tirane\",\"Europe\\/Ulyanovsk\",\"Europe\\/Uzhgorod\",\"Europe\\/Vaduz\",\"Europe\\/Vatican\",\"Europe\\/Vienna\",\"Europe\\/Vilnius\",\"Europe\\/Volgograd\",\"Europe\\/Warsaw\",\"Europe\\/Zagreb\",\"Europe\\/Zaporozhye\",\"Europe\\/Zurich\",\"Indian\\/Antananarivo\",\"Indian\\/Chagos\",\"Indian\\/Christmas\",\"Indian\\/Cocos\",\"Indian\\/Comoro\",\"Indian\\/Kerguelen\",\"Indian\\/Mahe\",\"Indian\\/Maldives\",\"Indian\\/Mauritius\",\"Indian\\/Mayotte\",\"Indian\\/Reunion\",\"Pacific\\/Apia\",\"Pacific\\/Auckland\",\"Pacific\\/Bougainville\",\"Pacific\\/Chatham\",\"Pacific\\/Chuuk\",\"Pacific\\/Easter\",\"Pacific\\/Efate\",\"Pacific\\/Enderbury\",\"Pacific\\/Fakaofo\",\"Pacific\\/Fiji\",\"Pacific\\/Funafuti\",\"Pacific\\/Galapagos\",\"Pacific\\/Gambier\",\"Pacific\\/Guadalcanal\",\"Pacific\\/Guam\",\"Pacific\\/Honolulu\",\"Pacific\\/Kiritimati\",\"Pacific\\/Kosrae\",\"Pacific\\/Kwajalein\",\"Pacific\\/Majuro\",\"Pacific\\/Marquesas\",\"Pacific\\/Midway\",\"Pacific\\/Nauru\",\"Pacific\\/Niue\",\"Pacific\\/Norfolk\",\"Pacific\\/Noumea\",\"Pacific\\/Pago_Pago\",\"Pacific\\/Palau\",\"Pacific\\/Pitcairn\",\"Pacific\\/Pohnpei\",\"Pacific\\/Port_Moresby\",\"Pacific\\/Rarotonga\",\"Pacific\\/Saipan\",\"Pacific\\/Tahiti\",\"Pacific\\/Tarawa\",\"Pacific\\/Tongatapu\",\"Pacific\\/Wake\",\"Pacific\\/Wallis\"]}");
        JSONObject parseObj = JSONUtil.parseObj(stringBuffer);
        Object responseStr = parseObj.get(SoccerContants.RESPONSE);
        JSONArray jsonArray = JSONUtil.parseArray(responseStr);
        System.out.println(jsonArray);
        String str = "{\n" +
                "    \"get\": \"leagues\",\n" +
                "    \"parameters\": {\n" +
                "        \"season\": \"2008\",\n" +
                "        \"country\": \"World\"\n" +
                "    },\n" +
                "    \"errors\": [],\n" +
                "    \"results\": 1,\n" +
                "    \"paging\": {\n" +
                "        \"current\": 1,\n" +
                "        \"total\": 1\n" +
                "    },\n" +
                "    \"response\": [\n" +
                "        {\n" +
                "            \"league\": {\n" +
                "                \"id\": 4,\n" +
                "                \"name\": \"Euro Championship\",\n" +
                "                \"type\": \"Cup\",\n" +
                "                \"logo\": \"https://media.api-sports.io/football/leagues/4.png\"\n" +
                "            },\n" +
                "            \"country\": {\n" +
                "                \"name\": \"World\",\n" +
                "                \"code\": null,\n" +
                "                \"flag\": null\n" +
                "            },\n" +
                "            \"seasons\": [\n" +
                "                {\n" +
                "                    \"year\": 2008,\n" +
                "                    \"start\": \"2008-06-07\",\n" +
                "                    \"end\": \"2008-06-29\",\n" +
                "                    \"current\": false,\n" +
                "                    \"coverage\": {\n" +
                "                        \"fixtures\": {\n" +
                "                            \"events\": true,\n" +
                "                            \"lineups\": true,\n" +
                "                            \"statistics_fixtures\": false,\n" +
                "                            \"statistics_players\": false\n" +
                "                        },\n" +
                "                        \"standings\": false,\n" +
                "                        \"players\": true,\n" +
                "                        \"top_scorers\": true,\n" +
                "                        \"top_assists\": true,\n" +
                "                        \"top_cards\": true,\n" +
                "                        \"injuries\": false,\n" +
                "                        \"predictions\": true,\n" +
                "                        \"odds\": false\n" +
                "                    }\n" +
                "                }\n" +
                "            ]\n" +
                "        }\n" +
                "    ]\n" +
                "}";
        LeaguesResponse leaguesResponse = new LeaguesResponse();
        ObjectMapper mapper = new ObjectMapper();
        try {
            JsonResponse jsonResponse = mapper.readValue(stringBuffer.toString(), JsonResponse.class);
            System.out.println(jsonResponse.getResponse());
            // 现在你可以使用jsonResponse对象了
            leaguesResponse = mapper.readValue(str, LeaguesResponse.class);
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println(leaguesResponse);
    }
}
src/main/java/cc/mrbird/febs/dapp/soccer/util/SoccerResponseUtil.java
@@ -2,6 +2,7 @@
import cc.mrbird.febs.common.contants.SoccerContants;
import cc.mrbird.febs.dapp.soccer.entity.JsonResponse;
import cc.mrbird.febs.dapp.soccer.entity.LeaguesResponse;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
@@ -33,6 +34,22 @@
        return jsonResponse;
    }
    /**
     * 将接口获取到的返回值转换成LeaguesResponse
     * @param response
     * @return
     */
    public static LeaguesResponse getLeaguesResponse(HttpResponse<String> response){
        LeaguesResponse leaguesResponse = new LeaguesResponse();
        ObjectMapper mapper = new ObjectMapper();
        try {
            leaguesResponse = mapper.readValue(response.getBody(), LeaguesResponse.class);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return leaguesResponse;
    }
    public static String objectToStr(Object object){
        return ObjectUtil.isEmpty(object) ? "-" : (String) object;
    }