SerializerProvider
имеет метод под названием getLocale()
. Он возвращает стандартную локаль (см. here), но на самом деле она получает информацию о локали от SerializationConfig
, и вы можете настроить ее, чтобы получить желаемый язык с помощью with
(см. here).
Редактировать: Я не совсем уверен, что ваш MyCustomSeralizer
выглядит, но вы должны написать собственный сериалайзер как этот
public class MyCustomSerializer extends SerializerBase<ClassToBeSerialized> {
public MyCustomSerializer() {
super(ClassToBeSerialized.class);
}
@Override
public void serialize(ClassToBeSerialized yourClass,
JsonGenerator jsonGenerator,
SerializerProvider serializerProvider) throws IOException, JsonGenerationException {
jsonGenerator.writeStartObject();
try {
jsonGenerator.writeFieldName("big (" + yourClass.getLocale().toString() + ")");
jsonGenerator.writeString(getLocaleSpecificSerializedValue(yourClass.getBig(), yourClass.getLocale()));
} catch (ParseException e) {
e.printStackTrace();
}
jsonGenerator.writeEndObject();
}
private String getLocaleSpecificSerializedValue(BigDecimal big, Locale locale) throws ParseException {
NumberFormat nf = NumberFormat.getInstance(locale);
return nf.parse(big.toString()).toString();
}
}
Позже зарегистрировать его в объект картографа
ObjectMapper mapper = new ObjectMapper();
SimpleModule module = new SimpleModule("BigDecimalModule", new Version(0, 1, 0, "alpha"));
module.addSerializer(ClassToBeSerialized.class, new MyCustomSerializer());
mapper.registerModule(module);
Тейк посмотрите на Jackson How-To: Custom Serializers.
У меня есть список MyClass. Я использую Spring MVC для сериализации списка для JSON. Каждый экземпляр MyClass в списке имеет BigDecimal и Locale. Я хочу сериализовать каждый BigDecimal на основе языка (который может быть различным для каждого экземпляра). Как настроить SerializationConfig для каждой строки? –