ResponseEntity не возвращает ответ json для метода Post

Мне трудно получить ответ в формате JSON при отправке почтового метода. Мой контроллер и класс ответа ниже. Также я использовал зависимости Джексона в моем pom.xml и я использую @RestController как аннотация контроллера.

      <dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.8.0</version>
</dependency>
<dependency>
     <groupId>com.fasterxml.jackson.core</groupId>
     <artifactId>jackson-databind</artifactId>
     <version>2.8.0</version>
 </dependency>
 <dependency>
     <artifactId>jackson-annotations</artifactId>
     <groupId>com.fasterxml.jackson.core</groupId>
     <version>2.8.0</version>
 </dependency>

Я ожидаю, что ответ будет как {Avalue:a, Bvalue:b}, но вместо этого он возвращает null для ответа. Можете ли вы помочь мне найти, где я пропал?

      @RestController
public class Controller{
   private PostService postService;
   @RequestMapping(value = "/create", method = RequestMethod.POST, produces = {MediaType.APPLICATION_JSON_VALUE})
   public ResponseEntity<PostResponse> create(@RequestBody VInfo v) {
     VInfo created = postService.createVInfo(v);
     PostResponse pr = new PostResponse();
     if (created == null) {
         return new ResponseEntity(HttpStatus.INTERNAL_SERVER_ERROR);
     } else {
         pr.a_value= v.a_value;
         pr.b_value= v.b_value;
         return new ResponseEntity<PostResponse>(pr,HttpStatus.OK);
      }
   }
}
      public class PostResponse {
    @JsonProperty("Avalue")
    public String A_VALUE;
    @JsonProperty("Bvalue")
    public String B_VALUE;
}
      @Service
public class PostService {
    @Autowired
    private CreateVRepository postRepository;
    public VInfo createVInfo(VInfo vInfo){
        VInfo v1= new VInfo ();
        v1.setA_VALUE(vInfo.getA_VALUE());
        v1.setB_VALUE(vInfo.getB_VALUE());
        postRepository.save(v1);
        return v1;
    }

}

Я использовал регистратор на своем контроллере, и я вижу, как регистратор без проблем переходит в скобки else. Когда я регистрирую свои объекты pr.a и pr.b, они возвращают ожидаемые значения. Однако ответ по-прежнему возвращает null.

4 ответа

вам понадобится геттер/сеттер для класса PostResponse

Попробуйте поставить аннотацию @RestControllerв классе.

У вас есть атрибуты A_VALUE и B_VALUE в вашем классе, тогда как вы устанавливаете значения a_value и b_value.

Сделайте Autowire свой класс PostService, а также удалите эти (Джексон) зависимости, если у вас уже есть зависимость start-web. Я бы также рекомендовал вам использовать аннотации Lombok @Data и @NoArgsConstructor на уровне класса.

У вас есть геттеры и сеттеры в классе ниже?

      public class PostResponse {
@JsonProperty("Avalue")
public String A_VALUE;
@JsonProperty("Bvalue")
public String B_VALUE;}
Другие вопросы по тегам