J'ai un objet avec la propriété isTechnician. Si je retourne cet objet via un Spring RestController, la propriété dans la réponse http json est nommée technician. Pourquoi le printemps est-il coupé? Comment puis-je le désactiver?
@GetMapping("user") public List<User> GetUsers() { var query = new Query(); query.addCriteria(where("disabled").is(false)); return mongoTemplate.find(query, User.class); }
RestController
@Document public class User { ... private boolean isTechnician; ... public boolean isTechnician() { return isTechnician; } public void setTechnician(boolean technician) { isTechnician = technician; } }
3 Réponses :
Votre getter isTechnician
n'est pas conforme aux normes. Vous devez le nommer isIsTechnician
ou getIsTechnician
(puisque la propriété de champ s'appelle isTechnician
)
ou
annotez votre champ avec Jackson (l'analyseur Spring JSON par défaut) ignorera le nom du getter (à partir duquel il obtient le nom de clé JSON correspondant) et utilisera celui spécifié comme valeur dans @JsonProperty ("isTechnician")
. @JsonProperty
annotation.
Une solution simple à ce problème consiste à utiliser l'annotation @JsonProperty sur votre fonction getter.
{ "isTechnician":true }
Maintenant, votre JSON deviendra
@JsonProperty("isTechnician") public boolean isTechnician() { return isTechnician; }
J'espère que cela vous aidera.
Meilleure solution
Par défaut, jackson avait une visibilité sur les getters et les setters lors de la sérialisation et de la désérialisation, il suffit de désactiver cela en utilisant JsonAutoDetect
@JsonAutoDetect(fieldVisibility = Visibility.ANY, getterVisibility = Visibility.NONE, setterVisibility = Visibility.NONE)
Pouvez-vous montrer la classe avec des getters et des setters
Bon indice. Merci.