valores booleanos java json spring-mvc jackson pojo

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