4

マイクロ サービスに 2 つのコントローラーがあり、どちらも POST であり、要求本文を JSON として受け入れます。一方は正常に動作し、もう一方は別のチームからの JSON 入力であり、ルート クラス名を使用しているため、後でこのためのカスタム オブジェクト マッパーを作成する必要があります。コントローラー、助けてくれませんか?

以下のコードを見つけてください。

@RestController
@Slf4j
public class Controller2 {
    @RequestMapping(value = "/some/update", method = RequestMethod.POST)
    public String updateEmd(@RequestBody final UpdateEMDRequest updateEMDRequest) throws JsonProcessingException {

            updateEMDRequest.getBookingReference()); // null now
            return "success";
    }
}

サンプルjsonは次のとおりです。

{
   "UpdateEMDRequest":{
      "TransactionStatus":"SUCCESS",
      "UniqueTransactionReference":"046060420",
      "PreAuthReference":"040520420",
      "BookingReference":"8PJ",
      "CarrierCode":"AS",
      "TransactionMode":"Batch",
      "CallBackUrl":"www.test.com/op/update",
      "Offers":[
         {
            "Offer":{
               "traveler":{
                  "firstName":"AHONY",
                  "surname":"DNEN",
                  "EMD":[
                     "081820470"
                  ]
               }
            }
         }
      ]
   }
}

UpdateEMDRequest、java

@JsonInclude(Include.NON_NULL)
public class UpdateEMDRequest {
    @JsonProperty("UniqueTransactionReference")
    private String uniqueTransactionReference;
    @JsonProperty("TransactionStatus")
    private String transactionStatus;
    @JsonProperty("PreAuthReference")
    private String preAuthReference;
    @JsonProperty("BookingReference")
    private String bookingReference;
    @JsonProperty("CarrierCode")
    private String carrierCode;
    @JsonProperty("TransactionMode")
    private String transactionMode;
    @JsonProperty("CallBackUrl")
    private String callBackUrl;
    @JsonProperty("Offers")
    private List<Offers> offers;

}

そのため、この json は適切に解析されず、updateEMDRequest のプロパティは常に null です。

4

0 に答える 0