java - booleanos - La solicitud de JSON Post para el campo booleano envía falso por defecto
send boolean in json postman (1)
Recuerde que Jackson, de forma predeterminada, determina el nombre de la propiedad ya sea del captador o del establecedor (el primero que coincide).
Para deserializar un objeto de tipo POJOUserDetails
, Jackson buscará tres propiedades
public void setFirstName(String firstName) {
public void setLastName(String lastName) {
public void setActive(boolean isActive) {
en el json. Estos son básicamente firstName
, lastName
, active
.
Obtienes el siguiente JSON
{ "firstName": "Test", "lastName": "1", "isActive": 1 }
Por lo tanto, el nombre y el lastName
se asignan, pero no tiene una propiedad llamada isActive
.
Jackson depende de las convenciones de nomenclatura de Java Bean con sus accessors (getters) y mutators (setters). Para un campo como
private boolean isActive;
los nombres apropiados de setter / getter son
public boolean getIsActive() {
return isActive;
}
public void setIsActive(boolean isActive) {
this.isActive = isActive;
}
Así que tienes dos soluciones posibles. Cambie su getter / setter como se muestra arriba o anote su campo con @JsonProperty
para que Jackson use el nombre del campo para determinar el nombre de la propiedad
@JsonProperty
private boolean isActive;
Hola, estoy enviando una solicitud de publicación JSON utilizando el RestClient de FireFox.
Mi solicitud JSON es la siguiente:
{ "firstName": "Test", "lastName": "1", "isActive": 1 }
Mi POJO tiene un campo activo como el siguiente
private boolean isActive;
Mi controlador se define como a continuación
@RequestMapping(method = {RequestMethod.POST,
RequestMethod.PUT}, value = "/save")
public ResponseEntity<RestResponse> save(
@RequestBody POJOUserDetails userDetails, WebRequest request){
En mi POJO, cuando verifico el valor de isActive, es falso sin importar lo que envíe. Probé por debajo del valor en mi solicitud JSON
"isActive": 1
"isActive": true
"isActive": "true"
"isActive": ""
"isActive": null
"isActive": false
Todo lo anterior envía falso en mi controlador. Por favor ayuda. Gracias
Añadiendo detalles de POJO
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonSerialize(include=Inclusion.NON_EMPTY)
public class POJOUserDetails {
private String firstName;
private String lastName;
private boolean isActive;
public boolean isActive() {
return isActive;
}
public void setActive(boolean isActive) {
this.isActive = isActive;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}