解决在方法中传递2个对象的问题所需的类。如果有人能为此提供更好的解决方案,我将不胜感激。
public TransferObject {
public long tid;
public String tname;
public String tlastname;
public String tmessage;
Message mess = new Message(tmessage);
Person pers = new Person(tid,tname,tlastname);
public Person getPerson() {
return pers;
}
public Message getMessage() {
return mess;
}
}
Mine post方法:在这里我解决了将2个对象作为一个传递的解决方案:
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Comment addComment(TransferObject transfer){
Person p = transfer.getPerson();
Message m = transfer.getMessage();
Person pers = new Person(p.getId(),p.getName(),p.getLastName());
Message mess = new Message(m.getMessage());
Comment comment = new Comment(mess);
comment = new CommentService().addComment(comment, pers);
return comment;
}
我的JSON输入:
{
"tid":"320598",
"tname":"Maks",
"tlastname":"Burkov",
"tmessage":"I Love Runing"
}
JSON输出:
Map <Long,Comment> comments = new HashMap();
{
"message": {
"created": "2016-04-30 18:25 PM GMT",
"message": null,
"messageID": 1
},
"id": 1,
"date": "2016-04-30 18:25 PM GMT"
}
我看到的所有信息都在传递..但消息不是。 在这里我得到消息null。如果有人能帮助我会很棒..
答案 0 :(得分:1)
好吧,看看你的班级:
public class TransferObject {
public long tid;
public String tname;
public String tlastname;
public String tmessage;
Message mess = new Message(tmessage);
Person pers = new Person(tid,tname,tlastname);
public Person getPerson() {
return pers;
}
public Message getMessage() {
return mess;
}
}
调用构造函数时初始化mess
和pers
字段。那时,所有其他字段都有其默认值null。只有在对象构建完成后才能从JSON值初始化字段。
要使代码生效,它必须看起来像
public Person getPerson() {
return new Person(tid, tname, tlastname);
}
public Message getMessage() {
return new Message(tmessage);
}
但是,为什么不从一开始就用正确的结构设计你的JSON:
class TransferObject {
private Message message;
private Person person;
}
并且JSON将具有sme结构:
{
"person": {
"tid":"320598",
"tname":"Maks",
"tlastname":"Burkov"
},
"message": {
"tmessage":"I Love Runing"
}
}
BTW,为什么这个t
前缀。为什么不直接调用字段&#34; id&#34;,&#34; name&#34;,&#34; lastName&#34;?是不是更具可读性?