简体   繁体   English

从请求中获取JSON数据,并使用Java Jersey和Jackson编写JSON响应

[英]Get JSON data from a request and craft a JSON response using Java Jersey and Jackson

I'm a beginner trying to learn about RESTful API in Java. 我是一个初学者,试图学习Java中的RESTful API。 I have created a Dynamic Web project in Eclipse and tried to receive JSON data in request. 我在Eclipse中创建了一个动态Web项目,并尝试在请求中接收JSON数据。

@Path("/test")
public class TestAPI {
    @POST
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    public String sayHello(User user) {
        String name = user.getName();
        return name;
    }
}


@XmlRootElement(name = "user")
@XmlAccessorType(XmlAccessType.FIELD)
class User{
    private String name;
    public User() {}
    @XmlElement
    public void setName(String s) {
        this.name = s;
    }

    public String getName() {
        return name;
    }
    public String toString(){
          return "{\"name\": "+name+"}";
       }
}

In this code, I have tried to create a class User which only have one attribute name. 在这段代码中,我尝试创建一个仅具有一个属性名称的类User。 I'm trying to send the name as JSON in request and retrieve the name from JSON. 我正在尝试在请求中将名称作为JSON发送并从JSON检索名称。

HTTP Status 500 - javax.ws.rs.ProcessingException: Error deserializing object from entity stream error. HTTP状态500-javax.ws.rs.ProcessingException:从实体流中反序列化对象时出错。 Can anyone tell me what's wrong with my code? 谁能告诉我我的代码有什么问题吗?

Thanks in advance. 提前致谢。

Edit: Import section is 编辑:导入部分是

import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

Try removing all the xml tags from your POJO and run. 尝试从POJO中删除所有xml标记并运行。

Like this: 像这样:

class User{
    private String name;
    public void setName(String s) {
        this.name = s;
    }

    public String getName() {
        return name;
    }
    public String toString(){
          return "{\"name\": "+name+"}";
       }
}

Request JSON: 要求JSON:

{"name" : "Your Name"}

Hope it helps. 希望能帮助到你。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM