Как я могу настроить вывод JSON из контроллера пружины отдыха - PullRequest
0 голосов
/ 28 июня 2019

У меня есть пациент класса 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"
   }
}

Здесь проверьте, что Успех / Неудача просто добавлен только как флаг.

Ответы [ 3 ]

0 голосов
/ 28 июня 2019

Spring boot использует Jackson для сериализации и десериализации JSON, попробуйте использовать @JSonIgnore (com.fasterxml.jackson.annotation.JsonIgnore).

0 голосов
/ 28 июня 2019

по вашему запросу

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("demo@demo.com");
        patient.setPassword(null); // set to null to ignore password
        return ResponseEntity.ok(patient);
    }
}

0 голосов
/ 28 июня 2019

Просто создайте другой объект и используйте его в качестве ответа вашего контроллера покоя;

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
    }
}

& in controller

@RestController
public class PatientController {

    @GetMapping(...)
    public PatientResponse get(...) {
        Patient patient = ... // get patient somehow
        return mapPatientToResponse(patient);  // map Patient to PatientResponse here
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...