2012-03-02 10 views
8

Mam pytanie związane z fasolą do szeregowania/deserializacji json za pomocą Jacksona. Wcześniej używałem GSON do tego, ale teraz mam do czynienia z projektem, który już zależy od Jacksona i wolałbym nie wprowadzać nowej zależności, jeśli mogę zrobić to, co już mam pod ręką.Określanie polityki nazewnictwa pól dla Jackson

więc wyobraź sobie mam fasoli jak:

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

A potem Jackson serializes go:

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

Używam następujący kod do produkcji powyższy wynik:

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

Jednak chciałbym (am expected) uzyskać następujące serializacji:

{ 
    "first_field": "<first_field_value>", 
    "second_field": "<second_field_value>" 
} 

ja celowo uproszczone moim przykładem, ale mam wielką hierarchię ziaren, które chcę serializacji i chcę, aby określić, że szeregowej atrybuty powinny być zawsze w snake_style (czyli podkreślenia) i odpowiednich polach fasoli powinien zawsze być CamelCased. Czy istnieje sposób, w jaki mogę wymuszać takie zasady nazewnictwa pól/atrybutów i używać ich bez adnotowania odpowiedniego atrybutu dla każdego pola?

Odpowiedz

11

I tak uważam, że to (okazało się, że po 2 godzinach poszukiwań byłem zaledwie 30 minut od znalezienia go):

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

Mam nadzieję, że będzie to okazać się pomocne dla kogoś innego zbyt .

+0

ObjectMapper nie ma takiej metody setPropertyNamingStrategy ... :( – stantonk

+0

@stantonk był kiedyś, gdy pisałem swój komentarz, najwyraźniej był tam dla Jacksona 1.9, ale nie znajduję odpowiednika w najnowszym Jackson Jeśli to zrobisz, napisz tutaj odpowiedź, aby ludzie mogli się do niej odwołać: –

+0

wymyśliłem to, miałem starszą wersję jacksona dołączoną przez przejściową zależność, a moje IDE zaimportowało niewłaściwą :-). – stantonk

Powiązane problemy