我想問一下如何訪問json(“緯度”,“緯度”)中的欄位,以便能夠在瀏覽器中將它們顯示為字串。
@RestController
@RequestMapping("/api/v1/")
public class ISSTrackerController {
@GetMapping("/location")
public ResponseEntity<String> getISSLocation() {
String uri = "http://api.open-notify.org/iss-now.json";
RestTemplate restTemplate = new RestTemplate();
String result = restTemplate.getForObject(uri, String.class);
return new ResponseEntity<>(result, HttpStatus.OK);
}
}
uj5u.com熱心網友回復:
要從 java 中的回應中獲取資料,您需要創建一些 POJO 來獲取回應:
class IssPosition {
private Double latitude;
private Double longitude;
// getters & setters
}
class IssResponse {
// Here the iss_position property in hte response is in cammel case,
// with the @JsonProperty annotation we tell the parser to pass that
// property to the annotated field issPosition
@JsonProperty("iss_position")
private IssPosition issPosition;
private String message;
private Timestamp timestamp;
// getters & setters
}
然后您可以撥打電話RestTemplate
@RestController
@RequestMapping("/api/v1/")
public class ISSTrackerController {
@GetMapping("/location")
public ResponseEntity<String> getISSLocation() {
String uri = "http://api.open-notify.org/iss-now.json";
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<IssResponse> response = restTemplate.getForObject(uri, IssResponse.class);
// We get te response as an IssResponse object
IssResponse result = response.getBody();
// We get the iss_position property so you have access
// to the latitude and longitude fields by
IssPosition position = result.getIssPosition();
// You can just return the position so you have a json like this one:
// { "latitude": "-24.0470", "longitude": "64.0261" }
return new ResponseEntity<>(position, HttpStatus.OK);
}
}
PS:編輯答案以使用ResponseEntity從 RestTemplate 呼叫中包含的實際回應。感謝@OneCricketeer 指出這一點!!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/494557.html
