为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 RestFull web 服务在 java 中响应打印请求的属性?

如何使用 RestFull web 服务在 java 中响应打印请求的属性?

潇湘沐 2023-02-16 16:10:52
我一直在关注 RestFull webservices 的教程,但我无法理解某些概念。这是我的 PersonServiceImpl 类。    @Path("/person")    @Consumes(MediaType.APPLICATION_JSON)    @Produces(MediaType.APPLICATION_JSON)    public class PersonServiceImpl implements PersonService{    private static Map<Integer,Person> person = new HashMap<Integer,Person>();    @Override    @Path("/add")    @POST    public Response addPerson(Person p) {        Response response = new Response();        if(person.get(p.getId())!=null) {            response.setStatus(false);            response.setMessage("Person already exists");        }            person.put(p.getId(),p);            response.setStatus(true);            response.setMessage("Person added sucessfully ");            return response;    }    @Override    public Response deletePerson(int id) {        // TODO Auto-generated method stub        return null;    }    @Override    public Person getPerson(int id) {        // TODO Auto-generated method stub        return null;    }    @Override    public Person[] getAllPerson() {        // TODO Auto-generated method stub        return null;    }   }我对代码进行了一些更改以生成和使用 json 文件。这是我的个人课程@XmlRootElement(name = "person")public class Person {    private String name;    private int age;    private int id;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }}这是我的响应类@XmlRootElementpublic class Response {    private boolean status;    private String message;    public boolean isStatus() {        return status;    }    public void setStatus(boolean status) {        this.status = status;    }}我想知道 :如何在响应中打印 person 类的值?json 值如何映射到 java 属性以及在哪里?3.如果我在 json 请求中输入一个额外的值,该值会发生什么变化?教程链接:https://www.journaldev.com/9170/restful-web-services-tutorial-java
查看完整描述

1 回答

?
饮歌长啸

TA贡献1951条经验 获得超3个赞

首先,实现自己的Response类不是一个好主意。该类javax.ws.rs.core.Response存在并且应该用于 JAX-RS 方法的一般响应。


关于 1:如果“打印”是指返回实例的 JSON 表示形式Person,只需执行以下操作:


    @Override

    public Person getPerson(int id) {

        Person personForId = person.get(id);

        if (personForId == null) {

          thrown new NotFoundException();

        }

        return personForId;

    }

该Person实例将自动序列化为 JSON 表示形式。


关于 2:由于Person遵循 Java Bean 的 getter 和 setter 约定,JSON 元素将按名称映射到 bean 属性。这个JSON


{

  "status": true,

  "message": "some message"

}

将映射到Person带有status = true和的实例message = "some message"。


您可以在类、其字段或 getter 或 setter 上使用大量注释来调整此行为。


关于 3:此行为取决于您使用的 JSON 序列化库。广泛使用的 Jackson 库提供了@JsonIgnoreProperties注解。为此,其他库可能有不同的注释。



查看完整回答
反对 回复 2023-02-16
  • 1 回答
  • 0 关注
  • 71 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信