Post API с использованием Spring Boot возвращает нулевые значения для вложенных json - PullRequest
0 голосов
/ 14 июля 2020

Я новичок в загрузке Spring и пытался создать api сообщения для публикации следующего json в. Однако, когда я получаю API, для вложенных элементов отображаются нулевые значения.

Json Запрос:

{
  "messageType": "abcd",
  "messageVersion": "1.1.0",
  "p_messageVersion": "1.095",
  "acsTransID": "6834628",
  "p_formValues_BRW": {
    "action": "http://10.10.65.96:8080/CORE/Test.htm",
    "correctFormData": "1234",
    "incorrectFormData": "0000",
    "cancelFormData": "true"
  }
}

Ответ при выполнении Get:

[{"acsTransID":"6834628","p_messageVersion":"1.095","messageVersion":"1.1.0","messageType":"abcd","p_formValues_BRW":{"action":null,"correctFormData":null,"incorrectFormData":null,"cancelFormData":null}}]

Мой объект модели

public class Product {
       @JsonProperty("acsTransID")
       private String acsTransID;
       
       @JsonProperty("p_messageVersion")
       private String p_messageVersion;
       
       @JsonProperty("messageVersion")
       private String messageVersion;
       
       @JsonProperty("messageType")
       private String messageType;
       
       @JsonProperty("p_formValues_BRW")
       private p_formValues_BRW p_formValues_BRW;
       
       public Product(p_formValues_BRW p_formValues_BRW) {
           this.p_formValues_BRW=p_formValues_BRW;
       }
       
       public Product() {
           
       }
       

       public String getacsTransID() {
          return acsTransID;
       }
       public void setacsTransID(String acsTransID) {
          this.acsTransID = acsTransID;
       }
       public String getp_messageVersion() {
          return p_messageVersion;
       }
       public void setp_messageVersion(String p_messageVersion) {
          this.p_messageVersion = p_messageVersion;
       }
       
       public String getmessageVersion() {
              return messageVersion;
           }
       
       public void setmessageVersion(String messageVersion) {
              this.messageVersion = messageVersion;
           }
       
       public String getmessageType() {
              return messageType;
           }
       
       public void setmessageType(String messageType) {
              this.messageType = messageType;
           }
       

       public p_formValues_BRW getp_formValues_BRW() {
       return p_formValues_BRW;
       }

       
       public void setp_formValues_BRW(p_formValues_BRW p_formValues_BRW) {
       this.p_formValues_BRW = p_formValues_BRW;
       }
       
/*     
       public Product withPFormValuesBRW(PFormValuesBRW pFormValuesBRW) {
           this.pFormValuesBRW = pFormValuesBRW;
           return this;
           }*/
           
}

class p_formValues_BRW {
    
    @JsonProperty("action")
    private String action;
    
    @JsonProperty("correctFormData")
    private String correctFormData;
    
    @JsonProperty("incorrectFormData")
    private String incorrectFormData;
    
    @JsonProperty("cancelFormData")
    private String cancelFormData;

    
    public String getaction() {
    return action;
    }

    public void setaction(String action) {
    this.action = action;
    }


    public String getcorrectFormData() {
    return correctFormData;
    }


    public void setcorrectFormData(String correctFormData) {
    this.correctFormData = correctFormData;
    }


    public String getincorrectFormData() {
    return incorrectFormData;
    }


    public void setincorrectFormData(String incorrectFormData) {
    this.incorrectFormData = incorrectFormData;
    }


    public String getcancelFormData() {
    return cancelFormData;
    }


    public void setcancelFormData(String cancelFormData) {
    this.cancelFormData = cancelFormData;
    }


}

Мой контроллер

@RestController
public class ProductServiceController {
    

   private static Map<String, Product> productRepo = new HashMap<>();

   @RequestMapping(value = "/products", method = RequestMethod.POST)
   public ResponseEntity<Object> createProduct(@RequestBody Product product, p_formValues_BRW p_formValues_BRW) {
       product.setp_formValues_BRW(p_formValues_BRW);
      productRepo.put(product.getacsTransID(), product);
//      productRepo.put(product., PFormValuesBRWRepo);
      return new ResponseEntity<>("Product is created successfully", HttpStatus.CREATED);
   }
   
   @RequestMapping(value = "/products")
   public ResponseEntity<Object> getProduct() {    
      return new ResponseEntity<>(productRepo.values(), HttpStatus.OK);
   }
}

Что я делаю неправильно. Также не лучше ли использовать JPARepositories и @ autowired.

Ответы [ 2 ]

1 голос
/ 14 июля 2020

Вам не нужно добавлять p_formValues_BRW в параметр функции createProduct () отдельно, потому что в вашем JSON запросе вы передаете p_formValues_BRW как вложенный объект.

Итак, на вашем контроллере, когда вы нажимаете «/ products» вы получите p_formValues_BRW в продукте, поэтому функция после изменений будет выглядеть так:

@RequestMapping(value = "/products", method = RequestMethod.POST)
   public ResponseEntity<Object> createProduct(@RequestBody Product product) {

       product.setp_formValues_BRW(product.getp_formValues_BRW());
      productRepo.put(product.getacsTransID(), product);
//      productRepo.put(product., PFormValuesBRWRepo);
      return new ResponseEntity<>("Product is created successfully", HttpStatus.CREATED);

   }
0 голосов
/ 14 июля 2020

Поскольку вы уже указали p_formValues_BRW в теле запроса, вам не нужно добавлять его в Product .

@RequestMapping(value = "/products", method = RequestMethod.POST)
public ResponseEntity<Object> createProduct(@RequestBody Product product) {
  productRepo.put(product.getacsTransID(), product);
  // productRepo.put(product., PFormValuesBRWRepo);
  return new ResponseEntity<>("Product is created successfully", HttpStatus.CREATED);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...