2014-01-27 7 views
1

У меня есть классы, как этотПропустить один уровень абстракции с Jackson JSON

public class Profile { 
    Profile profile 
    Interests interests 
} 


public class Interests { 
    HashMap<String,InterestMetric> interests = ... 
} 

при попытке сериализовать его с Джексоном в JSon:

{ 
    profile:... 
    interests: 
    { 
     interests:... 
    } 
} 

Есть ли способ, чтобы избежать создания 2 интереса теги без пользовательского сериализатора (аннотации)?

+0

Почему у вас есть эта абстракция на первом месте? –

ответ

2

Да:

public class Profile { 
    Profile profile; 
    HashMap<String,InterestMetric> interests = ... 
} 

Зачем вам нужен второй класс, если он содержит только карту?

И на второй взгляд ... почему профиль содержит профиль? Не следует ли содержать только информацию, собранную в профиле?

Edit: Поскольку вы упомянули, что кодовая не изменится, то @JsonUnwrapped annotation должно быть то, что вы ищете:

public class Profile { 
    Profile profile 
    @JsonUnwrapped 
    Interests interests 
} 


public class Interests { 
    HashMap<String,InterestMetric> interests = ... 
} 

Я не могу проверить это от того, где я, но он должен изменить ваш выход в это:

{ 
    profile:... 
    interests:... 
} 
+0

Мне нужен он для работы с процентами отдельно (переход на json и backward). Могу ли я использовать jackson mapper для преобразования такой структуры (с аннотациями типа) отдельно. Я не знаю, как использовать аннотацию @JsonDeserialize в этом случае –

+0

http://jackson.codehaus.org/1.9.9/javadoc/org/codehaus/jackson/annotate/JsonUnwrapped.html <- аннотация @JsonUnwrapped должна быть что вы ищете. Это позволяет вам ссылаться на ссылки «inline». – sheltem

+0

Большое спасибо, извините за мои плохие знания английского языка –

Смежные вопросы