Sto usando Spring 4 MVC con Jackson 2 per il mio servizio. Per una delle operazioni Ho un oggetto richiesta che ha un attributo dove la parola conduce caso cammello questa è solo una lettera in lunghezza:Perché Jackson 2 non riconosce la prima lettera maiuscola se la parola chiave del cammello è lunga una sola lettera?
private String aLogId;
Questa classe ha i getter e setter nome appropriato:
public String getALogId() { return aLogId; }
public void setALogId(String aLogId) { this.aLogId = aLogId; }
Tuttavia, quando tento di inviare una richiesta a questo servizio utilizzando la proprietà JSON corrispondente:
{"aLogId":"This is a log id"}
sto ricevendo una risposta 500 dal framework Spring dicendo il campo non viene riconosciuto e la mia classe controller non viene mai chiamato:
Impossibile leggere JSON: campo non riconosciuto "aLogId" (classe
Tuttavia, quando cambio la "L" in minuscolo, la richiesta viene deserializzato come previsto e la mia classe controller è colpito:
{"alogId":"This is a log id"}
Perché Jackson si aspettano che la "L" di essere minuscolo quando è ovviamente la seconda parola nel caso cammello convenzione per l'attributo e destinato a essere in maiuscolo? È perché la prima parola è lunga solo una lettera?
Ci sono altri attributi nell'oggetto richiesta dove la prima parola è più di una lettera e quelli attribuiti non affrontano questo stesso problema con la mancata corrispondenza nel caso.
che sarebbe un bug interessante. che dire di una parola a lettera singola nel mezzo, come 'logAId' - fallirebbe anche tu? – ZhongYu
Questo problema scompare se si rinomina getter e setter su 'setaLogId' e' getaLogId'. Ciò nonostante, nonostante la convenzione vola. C'è sicuramente qualcosa di "buggato" quando hai parole singole. – Leon