Spring Boot: Json Ответ не сопоставляется с сущностью - PullRequest
1 голос
/ 14 января 2020

Я пытаюсь отобразить этот Json ответ, который я получаю через защищенный RESTful API; однако отображение по какой-то причине происходит неправильно, так как я продолжаю получать NULL-ответ вместо заполненного объекта.

Это моя сущность:

@JsonTypeName("order")
@JsonTypeInfo(include = JsonTypeInfo.As.WRAPPER_OBJECT ,use = JsonTypeInfo.Id.NAME)
public class Order {

    @JsonProperty("id")
    private long customerd;

    @JsonProperty("email")
    private String customeEmail;


    public long getCustomerd() {
        return customerd;
    }

    public void setCustomerd(long customerd) {
        this.customerd = customerd;
    }


    public String getCustomeEmail() {
        return customeEmail;
    }

    public void setCustomeEmail(String customeEmail) {
        this.customeEmail = customeEmail;
    }
}

Это мой метод обслуживания:

   public Order orderDetails (@RequestBody Order order){

       String username = "username";
       String password = "password";
       HttpHeaders headers = new HttpHeaders();
       headers.setBasicAuth(username, password);

       // request url
       String url = "https://test.myshopify.com/admin/orders/2013413015655.json";

       RestTemplate restTemplate = new RestTemplate();

       HttpEntity request = new HttpEntity(headers);

        ResponseEntity<Order> response = restTemplate.exchange(
           url, HttpMethod.GET, request, Order.class);

       return order;
   }

Это мой метод управления:

    @GetMapping("/orderdetails")
    @ResponseStatus(HttpStatus.FOUND)
    public Order getBasicAut(Order order){
        return basicAuth.orderDetails(order);
    }

Ответы [ 2 ]

1 голос
/ 15 января 2020

Вы должны настроить REST для получения JSON контента

@GetMapping(path = "/orderdetails", produces = {MediaType.APPLICATION_JSON_VALUE})

В частности, приведенные ниже коды работают хорошо

@RestController
public class JsonController {

  @GetMapping(path = "/orderdetails", produces = {MediaType.APPLICATION_JSON_VALUE})
  @ResponseStatus(HttpStatus.FOUND)
  public Order sendJsonBack() {
    final Order order = new Order();
    order.setCustomerd(123L);
    order.setCustomeEmail("mail@gmail.com");
    return order;
  }
}


@Data
class Order implements Serializable {

  private static final long serialVersionUID = -4258392267221190600L;

  @JsonProperty("id")
  private long customerd;

  @JsonProperty("email")
  private String customeEmail;

}
0 голосов
/ 15 января 2020

Проблема была в том, что возвращали мои методы. Они оба должны возвращать ResponseEntity типа Order как:

public ResponseEntity<Order> orderDetails (@RequestBody Order order){

   String username = "username";
   String password = "password";
   HttpHeaders headers = new HttpHeaders();
   headers.setBasicAuth(username, password);

   // request url
   String url = "https://test.myshopify.com/admin/orders/2013413015655.json";

   RestTemplate restTemplate = new RestTemplate();

   HttpEntity request = new HttpEntity(headers);

   ResponseEntity<Order> response = restTemplate.exchange(
           url, HttpMethod.GET, request, Order.class);


   return response;
}

И мой контроллер:

@GetMapping("/orderdetails")
@ResponseStatus(HttpStatus.FOUND)
public ResponseEntity<Order> getBasicAut(Order order){
    return basicAuth.orderDetails(order);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...