首页 > 解决方案 > 如何自定义弹簧休息控制器的 json 输出

问题描述

我有一个具有以下属性的 POJO 类患者:

public class Patient implements Serializable{

    private static final long serialVersionUID = 2L;

    private long id;
    private String name;
    private Date dob;
    private String phoneNo;
    private String email;
    private Address address;
    private String username;
    private String password;

....

现在,从我的休息控制器中,我只需要在 json 中发送患者的姓名、电话号码、电子邮件和地址。我希望json输出为

{
   "check":"Success",
   "details":{
      "name":"Test User",
      "phoneNo":"9876544321",
      "email":"test@gmail.com",
      "address":"Address"
   }
}

此处检查成功/失败仅作为标志添加。

标签: javajsonspringrestspring-mvc

解决方案


只需创建另一个对象并将其用作您的 restful 控制器的响应;

public class PatientResponse implements Serializable {

    private static final long serialVersionUID = 2L;

    private Check check;
    private Detail details;

    // getter, setter, etc

    public static class Detail {

        private String name;
        private String phoneNo;
        private String email;
        private String address;

        // getters, setters, etc
    }

    public enum Check {
        Success, Failure
    }
}

& 在控制器中

@RestController
public class PatientController {

    @GetMapping(...)
    public PatientResponse get(...) {
        Patient patient = ... // get patient somehow
        return mapPatientToResponse(patient);  // map Patient to PatientResponse here
    }
}

推荐阅读