JSON-Post-Anfrage für ein boolesches Feld sendet standardmäßig false
Hallo, ich bin das senden einer JSON-Post request mit dem FireFox RestClient.
Mein JSON-Anfrage ist wie folgt:
{ "firstName": "Test", "lastName": "1", "isActive": 1 }
Mein POJO hat isActive Feld, wie unten
private boolean isActive;
Mein Controller ist zu definieren, wie unten
@RequestMapping(method = {RequestMethod.POST,
RequestMethod.PUT}, value = "/save")
public ResponseEntity<RestResponse> save(
@RequestBody POJOUserDetails userDetails, WebRequest request){
In meinem POJO, wenn ich den Wert isActive, ist es falsch egal was ich sende.
Ich habe versucht, unten Wert in meinem JSON-Anfrage
"isActive": 1
"isActive": true
"isActive": "true"
"isActive": ""
"isActive": null
"isActive": false
Alle oben sendet falsche in meinem controller. Bitte helfen Sie. Dank
Hinzufügen POJO details
@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;
}
}
InformationsquelleAutor der Frage NewQueries | 2014-02-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Denken Sie daran, dass Jackson, standardmäßig bestimmt der name der Eigenschaft entweder über die get-oder Set - (die erste entspricht).
Deserialisieren eines Objekts vom Typ
POJOUserDetails
Jackson wird anhand von drei Eigenschaftenin der JSON. Diese sind im Grunde
firstName
lastName
active
.Erhalten Sie das folgende JSON -
So
firstName
undlastName
zugeordnet sind, aber Sie haben nicht eine Eigenschaft namensisActive
.Jackson hängt davon ab, JavaBeans Namenskonventionen mit Ihren Accessoren (Getter) und Mutatoren (setter). Für ein Feld wie
den entsprechenden setter - /getter-Namen sind
So haben Sie zwei mögliche Lösungen. Ändern Sie Ihre "getter/setter", wie oben gezeigt, oder kommentieren Sie Ihr Feld mit
@JsonProperty
so, dass Jackson nutzt den Namen des Feldes, um zu bestimmen, den Namen der EigenschaftInformationsquelleAutor der Antwort Sotirios Delimanolis