[英]Spring web service request and response for mapping having list of other objects
我正在使用Spring Web服務,在我的控制器中,我正在使用@RequestBody和@ResponseBody。 現在,根據我的理解,這些注釋可以將輸入的請求轉換為您指定的類對象。 但是,如果我的類對象引用了其他類對象該怎么辦。 就像是:
public class Question {
private String questionText;
List<Options> options;
public String getQuestionText() {
return questionText;
}
public void setQuestionText(String questionText) {
this.questionText = questionText;
}
//getters and setters for options
}
傳入的請求可能如下所示:
{"questionText":"sample question","options":{"option-0":"option0","option-1":"option1","option-2":"option2","option-3":"option3"}}
選項看起來像這樣:
public class Option {
private String option;
public String getOption() {
return option;
}
public void setOption(String option) {
this.option = option;
}
}
如何將其映射?
但是,如果我的類對象引用了其他類對象該怎么辦。
這絕對不是問題。 Spring使用的Jackson可以提取該信息以生成適當的JSON。
您的Question
類充當根JSON的模板。 因此,JSON對象將具有一個名為questionText
的字段(將是一個JSON字符串)和一個名為options
的字段,這將是一個帶有遵循Options
模板的JSON對象的JSON數組。
因此,這
"options":{"option-0":"option0","option-1":"option1","option-2":"option2","option-3":"option3"}
是無效的。 options
必須是JSON數組,並且元素必須是JSON對象,而不是JSON字符串。
它必須看起來像
"options":[{"option":"option1"}, {"option":"option2"}]
匹配您的Options
類。
知道Spring使用Jackson,您可以相對輕松地進行測試
ObjectMapper mapper = new ObjectMapper();
Options o1 = new Options();
o1.setOption("option1");
Options o2 = new Options();
o2.setOption("option2");
Question question = new Question();
question.setOptions(Arrays.asList(o1, o2));
question.setQuestionText("sample question");
System.out.println(mapper.writeValueAsString(question));
產生
{"questionText":"sample question","options":[{"option":"option1"},{"option":"option2"}]}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.