[英]Spring boot restful web service. Xml response wrongly formatted
我有一個運行在Eclipse Neon上的使用Spring Boot 2.1,Java 8的簡單Restful web服務。 我發送以下請求:
<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客戶端發送請求書:Content-type = application / xml的Rest客戶端
我已經建立了兩個 patentList元素名稱的映射,以獲取PatentListWrapper中的PatentList ()。 如何獲得響應信封以匹配請求信封? 任何幫助表示贊賞。
的確如此,只需使用如下相同的變量名創建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插件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.