पोस्ट विधि भेजते समय मुझे 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} होने की उम्मीद कर रहा हूं, लेकिन इसके बजाय यह प्रतिक्रिया के लिए शून्य लौटाता है। क्या आप मुझे यह पता लगाने में मदद कर सकते हैं कि मैं कहाँ खो रहा हूँ?

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

}

मैंने अपने नियंत्रक पर लॉगर का उपयोग किया और मैं बिना किसी समस्या के लॉगर को अन्य ब्रैकेट में पास कर सकता हूं। जब मैं अपना pr.a और pr.b ऑब्जेक्ट लॉग करता हूं, तो वे अपेक्षित मान लौटाते हैं। हालांकि प्रतिक्रिया अभी भी शून्य लौटाती है।

1
Özgür Akdeniz 14 जिंदा 2022, 21:15
क्या आपने अपनी PostResponse कक्षा में गेटर्स और सेटर्स जोड़ने का प्रयास किया है? इसके अतिरिक्त, चूंकि आप स्प्रिंग-बूट का उपयोग कर रहे हैं, जैक्सन निर्भरता संस्करणों से छुटकारा पाएं। आपको उनकी आवश्यकता नहीं है। वास्तव में, यदि आपके पास निर्भरता के रूप में spring-boot-starter-web है, तो आपको उनकी आवश्यकता भी नहीं होनी चाहिए।
 – 
João Dias
14 जिंदा 2022, 21:24
हां, मैंने कोशिश की लेकिन परिणाम नहीं बदला, यह अभी भी शून्य हो गया।
 – 
Özgür Akdeniz
14 जिंदा 2022, 21:38
और क्या आप सुनिश्चित हैं कि created null नहीं है?
 – 
João Dias
14 जिंदा 2022, 21:40
हां, मैंने यह देखने के लिए लकड़हारे का उपयोग किया है कि क्या यह किसी अन्य भाग में जा रहा है और यह है
 – 
Özgür Akdeniz
14 जिंदा 2022, 21:50
त्रुटि postService.createVInfo(v); में होनी चाहिए। आपकी और मदद करने में सक्षम होने के लिए प्रासंगिक कोड जोड़ें
 – 
Panagiotis Bougioukos
14 जिंदा 2022, 22:35

4 जवाब

PostResponse वर्ग के लिए आपको गेट्टर/सेटर की आवश्यकता होगी

1
Fahim Fahad 14 जिंदा 2022, 21:20
मैंने प्रतिक्रिया वर्ग में गेटर और सेटर जोड़ने का प्रयास किया लेकिन परिणाम नहीं बदला
 – 
Özgür Akdeniz
14 जिंदा 2022, 21:40
एक और चीज गायब है। आपको सर्विस क्लास को ऑटोवायर करना होगा। @Autowired private PostService postService;
 – 
Fahim Fahad
15 जिंदा 2022, 11:07

कक्षा में एनोटेशन @RestController डालने का प्रयास करें।

0
Torino 14 जिंदा 2022, 21:33
मैं इसे पहले ही ले चुका हूं
 – 
Özgür Akdeniz
14 जिंदा 2022, 21:50

क्या आपके पास निम्न वर्ग में गेटर्स और सेटर्स हैं?

public class PostResponse {
@JsonProperty("Avalue")
public String A_VALUE;
@JsonProperty("Bvalue")
public String B_VALUE;}
0
bhanuja 15 जिंदा 2022, 06:18
हां, मैंने गेटर्स और सेटर्स जोड़े लेकिन इससे कुछ भी नहीं बदला।
 – 
Özgür Akdeniz
15 जिंदा 2022, 10:49

आपके पास अपनी कक्षा में विशेषताओं के रूप में A_VALUE और B_VALUE हैं, जबकि आप a_value और b_value के मान सेट कर रहे हैं

अपने पोस्टसर्विस क्लास को ऑटोवायर करें और इन (जैक्सन) निर्भरता को भी हटा दें जब आपके पास पहले से स्टार्टर-वेब निर्भरता हो। मैं आपको कक्षा स्तर पर लोम्बोक के @Data और @NoArgsConstructor एनोटेशन का उपयोग करने की भी सलाह दूंगा।

0
Udit kaushik 15 जिंदा 2022, 12:37