Używam Wiosna 4 MVC z Jackson 2 dla mojej służby. Na jednej z operacji Mam obiektu żądania, który posiada atrybut gdzie wiodącym przypadek wielbłąd słowo to tylko jedna litera długości:Dlaczego Jackson 2 nie rozpoznaje pierwszą literę, jeśli prowadzący przypadek wielbłąd słowo jest tylko jeden list długo?
private String aLogId;
Ta klasa ma odpowiednio nazwany pobierające i ustawiające:
public String getALogId() { return aLogId; }
public void setALogId(String aLogId) { this.aLogId = aLogId; }
jednak gdy próbuję napisać prośbę do tej usługi za pomocą odpowiedniej właściwości JSON:
{"aLogId":"This is a log id"}
ja dostaję 500 odpowiedź ramach wiosennego mówiąc pole nie jest rozpoznawana i moja klasa kontroler nie nazywa się:
Nie można odczytać JSON: pole Nierozpoznany „aLogId” (klasa
Jednak, kiedy zmienić „L” na małe litery, wniosek jest rozszeregować jak oczekiwano, a moja klasa kontrolera jest trafiony:
{"alogId":"This is a log id"}
Dlaczego Jackson oczekiwać „L”, aby być niższa przypadku, gdy jest to oczywiście drugie słowo w konwencji case wielbłąd atrybutu i przeznaczone do być wielkimi literami? Czy to dlatego, że pierwsze słowo ma tylko jedną literę?
Istnieją inne atrybuty w obiekcie żądania gdzie pierwsze słowo jest więcej niż jedna litera a te przypisywane nie spotykają ten sam problem z niedopasowaniem w sprawie.
który byłby interesującym błędem. a co z jednoliterowym wyrazem w środku, jak "logAId" - czy też zawodzi? – ZhongYu
Ten problem znika, jeśli zmienisz nazwę gettera i setera na 'setaLogId' i' getaLogId'. To jednak leci w obliczu konwencji. Zdecydowanie jest coś "zapluskwionego", gdy masz słowa jednoliterowe. – Leon