亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何自定義 spring rest 控制器的 json 輸出

如何自定義 spring rest 控制器的 json 輸出

www說 2023-02-23 09:55:36
我有一個具有以下屬性的 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":"[email protected]",      "address":"Address"   }}此處檢查成功/失敗僅作為標志添加。
查看完整描述

3 回答

?
蝴蝶刀刀

TA貢獻1801條經驗 獲得超8個贊

Spring boot 使用 Jackson 進行 JSON 序列化和反序列化,嘗試使用 @JSONIgnore (com.fasterxml.jackson.annotation.JsonIgnore)。



查看完整回答
反對 回復 2023-02-23
?
qq_笑_17

TA貢獻1818條經驗 獲得超7個贊

為您的要求

PatientDTO.java


public class PatientDTO {

    private Check check;


    @JsonIgnoreProperties(value = {"id", "dob", "username", "password"})

    private Object details;


    /* Getter & Setter */


    public enum Check {

        SUCCESS("Success"),

        FAILURE("Failure");


        private String name;


        Check(String name) {

            this.name = name;

        }


        @JsonValue

        public String getName() {

            return name;

        }

    }

}

控制器演示:


@RestController

@RequestMapping("/test")

public class TestController {


    @GetMapping("/patient")

    public PatientDTO getPatient() {

        PatientDTO patientDTO = new PatientDTO();

        patientDTO.setCheck(PatientDTO.Check.SUCCESS);

        patientDTO.setDetails(new Patient());

        return patientDTO;

    }

}

更好的方法

使用 http 狀態



@JsonInclude(JsonInclude.Include.NON_NULL)

public class Patient {

    private long id;

    private String name;

    private Date dob;

    private String phoneNo;

    private String email;

    private Address address;

    private String username;

    private String password;


    /* Getter & Setter */

}

控制器演示:


@RestController

@RequestMapping("/test")

public class TestController {


    @GetMapping("patient")

    // or @ResponseStatus(HttpStatus.OK)

    public ResponseEntity<Patient> patient() {

        Patient patient = new Patient();

        patient.setId(123);

        patient.setName("123");

        patient.setEmail("[email protected]");

        patient.setPassword(null); // set to null to ignore password

        return ResponseEntity.ok(patient);

    }

}


查看完整回答
反對 回復 2023-02-23
?
明月笑刀無情

TA貢獻1828條經驗 獲得超4個贊

只需創建另一個對象并將其用作您的 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

    }

}


查看完整回答
反對 回復 2023-02-23
  • 3 回答
  • 0 關注
  • 152 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號