Tôi đang sử dụng Spring 4 MVC với Jackson 2 cho dịch vụ của mình. Đối với một trong những hoạt động tôi có một đối tượng yêu cầu có một thuộc tính mà trường hợp lạc đà hàng đầu từ đây chỉ là một bức thư dài:Tại sao Jackson 2 không nhận ra chữ cái đầu tiên nếu từ trường hợp lạc đà hàng đầu chỉ là một chữ cái dài?
private String aLogId;
Lớp này có thu khí đặt tên một cách thích hợp và setters:
public String getALogId() { return aLogId; }
public void setALogId(String aLogId) { this.aLogId = aLogId; }
Tuy nhiên, khi tôi cố gắng để gửi một yêu cầu đến dịch vụ này bằng cách sử dụng tài sản tương ứng JSON:
{"aLogId":"This is a log id"}
tôi nhận được một phản ứng 500 từ Spring framework nói lĩnh vực này không được công nhận và lớp điều khiển của tôi là không bao giờ được gọi là:
Không thể đọc JSON: Trường không được nhận "aLogId" (lớp
Tuy nhiên, khi tôi thay đổi "L" để giảm trường hợp, yêu cầu được deserialized như mong đợi và lớp điều khiển của tôi là hit:
{"alogId":"This is a log id"}
tại sao Jackson hy vọng "L" là trường hợp thấp hơn khi nó rõ ràng là từ thứ hai trong quy ước trường hợp lạc đà cho thuộc tính và dự định trong trường hợp trên? Có phải vì từ đầu tiên chỉ là một chữ cái dài không?
Có các thuộc tính khác trong đối tượng yêu cầu trong đó từ đầu tiên nhiều hơn một chữ cái và những thuộc tính đó không đối mặt với cùng một vấn đề này với sự không phù hợp trong trường hợp.
đó sẽ là một lỗi thú vị. những gì về một chữ cái duy nhất ở giữa, giống như 'logAId' - nó sẽ thất bại? – ZhongYu
Vấn đề này sẽ biến mất nếu bạn đổi tên bạn getter và setter thành 'setaLogId' và' getaLogId'. Điều đó bay trong khuôn mặt của công ước mặc dù. Có chắc chắn là một cái gì đó 'buggy' khi bạn có những chữ cái duy nhất. – Leon