我有一个使用Spring Boot 2.1,Java 8的简单Restful web服务,该服务在Eclipse Neon上运行。我正在发送以下请求:
<patentListWrapper>
<patentList>
<patent>
<guid>bbb</guid>
</patent>
<patent>
<guid>ccc</guid>
</patent>
</patentList>
</patentListWrapper>
,即时通讯返回以下(错误的)响应:
<patentListWrapper>
<patentList>
<patentList>
<guid>ddd</guid>
</patentList>
<patentList>
<guid>eee</guid>
</patentList>
</patentList>
</patentListWrapper>
即我在响应中有2个PatentList元素,而不是内部的Patent元素,我不知道为什么。我的2个映射请求的POJO类是:
public class PatentListWrapper {
private List<Patent> patents;
public List<Patent> getPatentList() {
return patents;
}
public void setPatentList(List<Patent> patents) {
this.patents = patents;
}
}
和:
public class Patent {
private String guid;
public String getGuid() {
return guid;
}
public void setGuid(String guid) {
this.guid = guid;
}
public Patent() {
super();
}
}
我的REST Controller类是:
@RestController
public class PndController {
@Autowired
ReadFromDb db;
@RequestMapping(value = "/guidRequest/xmlList", method = RequestMethod.POST, produces = { "application/xml", "text/xml" }, consumes = MediaType.ALL_VALUE )
public PatentListWrapper guidSearchList(@RequestBody PatentListWrapper patentListWrapper) {
System.out.println("DS in guidSearchList()");
patentListWrapper = db.readGuidsFromDb(patentListWrapper); // Set the guid in the patents List in patentListWrapper
return patentListWrapper;
}
}
和ReadFromDb类:
@Repository
public class ReadFromDb {
public PatentListWrapper readGuidsFromDb(PatentListWrapper patentListWrapper) {
List<Patent> patents= patentListWrapper.getPatentList();
for(Patent patent : patents) {
patent.setGuid("aaa");
}
patentListWrapper.setPatentList(patents);
return patentListWrapper;
}
}
我正在使用Windows ARC Advanced Rest Client发送我的请求: Rest client的Content-type = application / xml
我已经确定,两个两个PatentList元素名称都映射到PatentListWrapper中的 PatentList ()。如何获得响应信封以匹配请求信封?任何帮助表示赞赏。
答案 0 :(得分:0)
这是真的,只需使用如下相同的变量名创建getter setter方法,而不是对getter setter方法使用不同的名称
private List<Patent> patents;
public List<Patent> getPatents() {
return patents;
}
public void setPatents(List<Patent> patents) {
this.patents = patents;
}
或使用GSON并使用@JsonProperty并定义所需的值名称,此外,如果您不使用IDE来生成getter和setter,则最好使用lombok插件。