java - 在方法中传递 2 个 json 格式的对象

标签 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;
    }
}

我的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;
    }
}

messpers 字段在调用构造函数时初始化。此时,所有其他字段都有默认值,即空值。只有在构造对象之后,字段才会根据其 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/

相关文章:

java - 在没有加锁机制的情况下,不同线程对List进行读和 "set"操作是否安全

tomcat - 严重 : Null component Catalina:type=JspMonitor, name=jsp,WebModule=//localhost/myproject,J2EEApplication=none,J2EEServer=none

javascript - 在 AngularJS 前端对日期进行排序

java - Jersey JSON 序列化

java - 在 Java Jersey 应用程序中启动时出现 NoSuchMethodError

jersey - 在基于 RestEasy 的服务中为 ThreadLocal 存储使用服务器请求和响应过滤器

java - 我无法读取用户存储,

java - Java中有没有办法将一个方法用作另一个方法的输入变量?

json - 在 ng-packagr 中嵌入 json

c# - 将平面 JSON 转换为嵌套 JSON