问题描述
我需要在Springboot中创建一个发布请求,并调用一个API来更新记录。映射JSON布局是一个嵌套布局,如下所述:
{
"Config": {
"Identity": "","Region": ""
},"OPTION_IP_COLL": {
"OPTION_NAME": "","OPTION_VALUE": ""
},"REC_XPFH": {
"UPDATE_CD": "","ENTITY_TYPE": "","TN_ID": "","PR_ID": ""
},"REC_GRP": {
"REC_PRPR": {
"PR_UPDATE_CD": "","PR_ENTITY": "","PR_CL_EFT_IND": "","PR_EDI_DEST_ID": "","PR_RA_DEST_IND": ""
},"REC_MCBR": {
"BD_ID": "","BR_ACCT_NO": "","BR_ACCT_NAME": "","BR_ACCT_NO_QUA": ""
}
}
}
由于这是一个嵌套的嵌套,因此对于如何为该请求定义POJO(应该为单个或多个)并在@PostMapping中调用它,我有些困惑。我正在考虑创建一个Main POJO,然后为其他段创建不同的类,然后在RestController类中调用Main。我不确定这是否是正确的方法,还是可以尝试其他方法。另外,由于涉及嵌套段,我需要一些帮助来定义REC_GRP类。
MainPOJO.class
public class ProviderMappingPOJO {
private Config config;
private OPTIONAL_IP_CALL option_ip_call;
private REC_XPFH rec_xpfh ;
private REC_GRP rec_grp;
//getter and setter method .....
Config.class
private String Identity ;
private String Region;
// getters and setters method...
OPTION_IP_COLL.class
private String UPDATE_CD;
private String ENTITY_TYPE;
private String TN_ID;
private String PR_ID;
// getter and setter methods ...
REC_XPFH.class
// Not sure how to define structure for this as there are nested segments
RestController.class
public class RestController {
@PostMapping(url)
public <> getProviderDetails(@RequestBody MainPOJO main){
// code
}
解决方法
您可以使用一个主pojo,并且可以在该主pojo内定义上面提到的子pojo。
public class MainPOJO {
private Config config;
private OPTIONAL_IP_CALL option_ip_call;
private REC_XPFH rec_xpfh ;
private REC_GRP rec_grp;
// setters and getters
}
您可以参考以下链接,这将帮助您清楚地了解转换过程。
https://dzone.com/articles/converting-json-to-pojos-using-java
http://www.jsonschema2pojo.org/
https://www.freecodeformat.com/json2pojo.php
完成转换后,可以使用Spring Rest控制器使用json。
public class RestController {
@PostMapping(path="url",consumes = "application/json")
public <> getProviderDetails(@RequestBody MainPOJO main){
// code
}
}