2012-03-02 22 views
8

Tôi có câu hỏi liên quan đến việc tạo chuỗi tuần tự/định tuyến json bằng Jackson. Trước đây tôi đã sử dụng GSON để làm điều đó, nhưng bây giờ tôi đang phải đối mặt với một dự án đã phụ thuộc vào Jackson và tôi không muốn giới thiệu sự phụ thuộc mới nếu tôi có thể làm với những gì tôi đã có trong tầm tay.Chỉ định chính sách đặt tên trường cho Jackson

Vì vậy, hãy tưởng tượng tôi có một bean như:

class ExampleBean { 
    private String firstField; 
    private String secondField; 
    // respective getters and setters 
} 

Và sau đó Jackson serializes nó để:

{ 
    "firstField": "<first_field_value>", 
    "secondField": "<second_field_value>" 
} 

Tôi đang sử dụng đoạn mã sau để tạo ra kết quả trên:

ExampleBean bean; 
... 
ObjectMapper mapper = new ObjectMapper(); 
mapper.writeValue(outStream, bean); 

Tuy nhiên tôi muốn (được mong đợi) để nhận được sự tuần tự hóa sau đây:

Tôi đã cố ý đơn giản hóa ví dụ của mình, nhưng tôi có phân cấp lớn các bean mà tôi muốn tuần tự hóa và tôi muốn xác định rằng các thuộc tính tuần tự phải luôn ở dạng snake_style (có dấu gạch dưới) và các trường bean tương ứng phải luôn là camelCased. Có cách nào tôi có thể thực thi các chính sách đặt tên trường/thuộc tính đó và sử dụng chúng mà không chú thích thuộc tính tương ứng cho mọi trường không?

Trả lời

11

Và vâng tôi thấy nó (nó bật ra rằng sau 2 giờ tìm kiếm tôi đã chỉ có 30 phút đi từ việc tìm kiếm nó):

ObjectMapper mapper = new ObjectMapper(); 
mapper.setPropertyNamingStrategy(
    PropertyNamingStrategy.CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES); 
mapper.writeValue(outStream, bean); 

Hy vọng rằng điều này sẽ bật ra được hữu ích cho người khác quá .

+0

ObjectMapper dường như không có một phương thức setPropertyNamingStrategy ... :( – stantonk

+0

@stantonk từng là khi tôi viết bình luận của mình. Rõ ràng là nó ở trong đó cho Jackson 1.9.Tuy nhiên, tôi không tìm thấy tương đương trong Jackson gần đây nhất Xin vui lòng, nếu bạn làm như vậy, hãy viết lại câu trả lời để mọi người có thể tham khảo nó –

+0

tìm ra, tôi đã có một phiên bản cũ hơn của jackson được bao gồm thông qua một phụ thuộc transitive, và IDE của tôi nhập sai :-). – stantonk

Các vấn đề liên quan