尝试使用 API 中的 JSON 文档时出现多个嵌套异常

Multiple nested exceptions while trying to consume JSON documents from API's

我创建了一个简单的 Spring 引导应用程序,我试图在其中使用 API 至 JSON 信息。下面您可以看到我在服务 Class 上使用 RestTemplate 创建的简单代码。我面临的问题是,当我使用下面的 API url 时,出现以下嵌套异常。

如果我使用的 API url 信息较少,则一切正常。我做错了什么?

控制器 CLASS

package com.andrekreou.iot;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
public class RestSpringBootController {

    private final Service service;

    @Autowired
    public RestSpringBootController(Service service) {
        this.service = service;
    }

    @GetMapping(path = "/opap")
    public List<Object> getWeather(){
        return service.getWeather();
    }
}

服务CLASS

package com.andrekreou.iot;

import org.springframework.web.client.RestTemplate;
import java.util.Arrays;
import java.util.List;

@org.springframework.stereotype.Service
public class Service {

    public List<Object> getWeather(){
        String url = "https://api.opap.gr/draws/v3.0/5104/last-result-and-active";
        RestTemplate restTemplate = new RestTemplate();
        Object[] weather = restTemplate.getForObject(url, Object[].class);
        return Arrays.asList(weather);
    }
}

问题出在这行代码中:

 Object[] weather = restTemplate.getForObject(url, Object[].class);

您正在映射这个 JSON :

{
"last": {
"gameId": 5104,
"drawId": 2446,
"drawTime": 1653850800000,
"status": "results",
"drawBreak": 1800000,
"visualDraw": 2446,
"pricePoints": {
"amount": 0.5
},
"winningNumbers": {
"list": [
1,
9,
19,
22,
33
],
"bonus": [
1
]
},
...
}

这不是数组,它是一个对象,这就是您在问题中描述错误的原因。

将以上代码行更改为:

Object weather = restTemplate.getForObject(url, Object.class);

它应该可以正常工作。