有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

json在Java中使用Rest模板反序列化字符串数组

我正在进行api调用,json作为字符串数组返回。如何反序列化字符串数组?它们不包含任何类型的密钥,因此我通常的反序列化方法不起作用。这是使用传奇联盟api获取游戏数据https://developer.riotgames.com/

api返回的JSON数据:

[
    "NA1_3946470802",
    "NA1_3946414706",
    "NA1_3945276842",
    "NA1_3945236107"
]

代码片段:

public class MatchList {

    public List<String> matches;

    public MatchList(List<String> matches) {}
}

@RestController
@RequestMapping("/api")
public class SummonerController {
  private RestTemplate restTemplate = new RestTemplate();

    @RequestMapping("/summoner/test/{summonerName}")
    public MatchList getSummonerInfoTest(@PathVariable String summonerName){

        MatchList matchstest = restTemplate.getForObject("https://americas.api.riotgames" +
                        ".com/lol/match/v5/matches/by-puuid/"+ summoner.getPuuid()+ "/ids? 
start=0&count=100&api_key="+apikey,
                MatchList.class);

        return matchstest;
    }
}

我试过使用:

private List<String> matches;
public List<String> matches;
public ArrayList<String> matches;
public String[] matches;

共 (1) 个答案

  1. # 1 楼答案

    您的api正在返回数组。因此,必须将类类型指定为array

    String[] matchstest = restTemplate.getForObject("https://americas.api.riotgames" +
                            ".com/lol/match/v5/matches/by-puuid/"+ summoner.getPuuid()+ "/ids? 
    start=0&count=100&api_key="+apikey,
                    String[].class);
    

    如果需要,可以将此数组作为列表返回。您可以使用Arrays.asList(matchstest)