Saya mengalami kesulitan mendapatkan respons sebagai format JSON saat mengirim metode posting. Kontroler dan kelas respons saya ada di bawah. Saya juga menggunakan dependensi Jackson di pom.xml saya dan, saya menggunakan @RestController sebagai anotasi Pengendali.

<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>

Saya mengharapkan respons sebagai {Avalue:a, Bvalue:b} tetapi sebaliknya mengembalikan null untuk respons. Bisakah Anda membantu saya menemukan di mana saya hilang?

@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;
    }

}

Saya menggunakan logger di controller saya dan saya bisa melihat logger lewat ke tanda kurung lain tanpa masalah. Ketika saya mencatat objek pr.a dan pr.b saya, mereka mengembalikan nilai yang diharapkan. Namun respons masih mengembalikan nol.

1
Özgür Akdeniz 14 Januari 2022, 21:15
Sudahkah Anda mencoba menambahkan getter dan setter ke kelas PostResponse Anda? Selain itu, karena Anda menggunakan Spring-Boot, singkirkan versi dependensi Jackson. Anda tidak membutuhkan mereka. Bahkan, Anda seharusnya tidak membutuhkannya jika Anda memiliki spring-boot-starter-web sebagai ketergantungan.
 – 
João Dias
14 Januari 2022, 21:24
Ya, saya mencoba tetapi hasilnya tidak berubah, itu masih menghasilkan nol.
 – 
Özgür Akdeniz
14 Januari 2022, 21:38
Dan apakah Anda yakin created bukan null?
 – 
João Dias
14 Januari 2022, 21:40
Ya, saya menggunakan logger untuk melihat apakah itu akan menjadi bagian lain dan itu
 – 
Özgür Akdeniz
14 Januari 2022, 21:50
Kesalahan harus berada di postService.createVInfo(v);. Tambahkan kode yang relevan untuk dapat membantu Anda lebih banyak
 – 
Panagiotis Bougioukos
14 Januari 2022, 22:35

4 jawaban

Anda akan membutuhkan pengambil/penyetel untuk kelas PostResponse

1
Fahim Fahad 14 Januari 2022, 21:20
Saya mencoba menambahkan pengambil dan penyetel ke kelas respons tetapi hasilnya tidak berubah
 – 
Özgür Akdeniz
14 Januari 2022, 21:40
Hal lain yang hilang. Anda akan perlu untuk kelas layanan autowire. @Autowired private PostService postService;
 – 
Fahim Fahad
15 Januari 2022, 11:07

Coba beri anotasi @RestController di kelas.

0
Torino 14 Januari 2022, 21:33
Saya sudah memilikinya
 – 
Özgür Akdeniz
14 Januari 2022, 21:50

Apakah Anda memiliki Getter dan Setter di kelas bawah?

public class PostResponse {
@JsonProperty("Avalue")
public String A_VALUE;
@JsonProperty("Bvalue")
public String B_VALUE;}
0
bhanuja 15 Januari 2022, 06:18
Ya, saya menambahkan getter dan setter tetapi tidak mengubah apa pun.
 – 
Özgür Akdeniz
15 Januari 2022, 10:49

Anda memiliki A_VALUE dan B_VALUE sebagai atribut di kelas saat Anda menyetel nilai a_value dan b_value.

Lakukan Autowire kelas PostService Anda dan juga hapus dependensi ini (Jackson) ketika Anda sudah memiliki dependensi starter-web. Saya juga menyarankan Anda untuk menggunakan anotasi @Data dan @NoArgsConstructor Lombok di tingkat kelas.

0
Udit kaushik 15 Januari 2022, 12:37