在方法

时间:2016-04-30 18:39:53

标签: java json jersey

解决在方法中传递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。如果有人能帮助我会很棒..

1 个答案:

答案 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;
    }
}

调用构造函数时初始化messpers字段。那时,所有其他字段都有其默认值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;?是不是更具可读性?