[英]Issue with POST JSON with list of strings to a Jersey REST service
我是Jersey REST服务的新手,目前正在尝试使用POSTMAN发布带有内部字符串列表的JSON,到目前为止没有任何成功。
我要发布的JSON是一个Question对象:
{
"answers":["I don't know","Maybe","No","Yes"],
"correct":"Yes",
"question":"Are you learning Android?"
}
Post方法使用一个Question对象,将正确的答案设置为“ CORRECT”,并将Question对象生成为JSON:
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
@Path("add")
public Question getAllItems(Question question) {
question.setCorrect("CORRECT");
return question;
}
因此,当我通过Postamn发布JSON时,要返回的JSON没有发送的字符串列表,如下所示:
{
"correct":"CORRECT",
"question":"Are you learning Android?"
}
我期望由REST服务生成的JSON:
{
"answers":["I don't know","Maybe","No","Yes"],
"correct":"CORRECT",
"question":"Are you learning Android?"
}
Question类具有三个字段(字符串代表问题,字符串代表正确答案,字符串列表代表可能的答案):
@XmlRootElement
public class Question {
private String question;
public String getQuestion() {
return question;
}
public void setQuestion(String question) {
this.question = question;
}
private List<String> answers;
@XmlElement
public List<String> getAnswers() {
return answers;
}
public void setAnswers(List<String> answers) {
if(this.answers == null){
this.answers = new ArrayList<>();
}
this.answers.clear();
this.answers.addAll(answers);
Collections.shuffle(this.answers);
}
public void setAnswers(String[] answers) {
if(this.answers == null){
this.answers = new ArrayList<>();
}
this.answers.clear();
this.answers.addAll(Arrays.asList(answers));
Collections.shuffle(this.answers);
}
private String correct;
public String getCorrect() {
return correct;
}
public void setCorrect(String correct) {
this.correct = correct;
}
public Question() {}
public Question(String question, List<String> answers, String correct){
this.question = question;
this.correct = correct;
this.answers = new ArrayList<>(answers);
}
public Question(String question, String[] answers, String correct){
this.question = question;
this.correct = correct;
this.answers = new ArrayList<>();
setAnswers(answers);
}
}
找到解决方案后,我将getAnswers更改为返回String []而不是List,并且成功了。
@XmlElement
public String[] getAnswers() {
String[] temp = new String[answers.size()];
for(int i = 0; i < temp.length; i++){
temp[i] = answers.get(i);
}
return temp;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.