解决在方法中传递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;
}
}
我的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"
}
正如我所见,所有信息都在传递……但消息却没有。 这里我收到消息为空。如果有人能帮助我那就太好了..
最佳答案
好吧,看看你的类(class):
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
字段在调用构造函数时初始化。此时,所有其他字段都有默认值,即空值。只有在构造对象之后,字段才会根据其 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"
}
}
顺便说一句,为什么这个 t
前缀。为什么不直接将字段命名为“id”、“name”、“lastName”?这不是更具可读性吗?
关于java - 在方法中传递 2 个 json 格式的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36958757/