Уважаемые,
Я застрял здесь:
С Spring 4.3.3.RELEASE пытается зашифровать одно поле объекта Amount (Custom Object) с помощью JsonSerializer из objectMapper
Я установил это
@Override
public void configureMessageConverters(
List<HttpMessageConverter<?>> converters) {
//Added string converter to avoid scape " and the addition of " at the beginning of the Json
converters.add(new StringHttpMessageConverter(Charset.forName("UTF-8")));
converters.add(new MappingJackson2HttpMessageConverter(objectMapper));
}
В этом классе определен объект-сопоставитель
@Bean
public ObjectMapper objectMapper() {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
objectMapper.registerModule(new JodaMoneyModule());
objectMapper.registerModule(new JodaModule());
//objectMapper.registerModule(new AmountModule());
objectMapper.getFactory().setCharacterEscapes(new JavascriptCharacterEscapes());
return objectMapper;
}
Где AmountModule - мой пользовательский сериализатор
public class AmountModule extends SimpleModule
{
private static final long serialVersionUID = 1L;
public AmountModule()
{
super();
// then serializers:
addSerializer(Amount.class, new AmountSerializer());
}
}
public class AmountSerializer extends JsonSerializer<Amount> {
@Override
public void serialize(Amount amount, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException {
if (amount!=null) {
try {
amount.setValue(webParamEncryptor.encryptWebParam(amount.getValue().toPlainString()));
jgen.writeObject(amount);
} catch (Exception e) {
logger.error("Error to marshal date", e);
}
} else {
jgen.writeNull();
}
}
}
И мой объектСумма указана ниже:
public class Amount extends Currency {
private static final long serialVersionUID = 1L;
@JsonProperty("value")
private String value = null;
@JsonProperty("customDisplay")
private String customDisplay = null;
private boolean roundToCurrencyDecimals= true;
Использование объекта Баланс Сумма
public class Account implements Serializable {
private static final long serialVersionUID = 1L;
@JsonProperty("id")
private int id;
@JsonIgnore
private String number = null;
@JsonIgnore
private Amount balance = null;
При сериализации Учетной записи появляется следующая ошибка:
Невозможно записать содержимое: Бесконечная рекурсия (StackOverflowError) (через цепочку ссылок: java.util.ArrayList [0] -> accounts.domain.Account [\ "balance \"]);
Я все перепробовал @JsonIgnore /@JsonView / @JsonManagedReference, @JsonBackReference} и @JsonIdentityInfo / @JsonIdentityInfo, и мне кажется, что ничего не работает, или, может быть, я устанавливаю вещи в неправильном месте.
Может ли кто-нибудь мне помочь?Спасибо