Для нашего сервисного ввода мы используем объектный преобразователь с определенными конфигами для его сериализации. Мы предоставляем те же самые конфигеры объектного сопоставления нашему клиенту в нашей client-lib и используем его для десериализации ввода с нашей стороны.
Теперь мы добавляем еще один объект к нашему входу, который принадлежит общей команде и имеет собственную конфигурацию сопоставителя объектов для правильной сериализации.
class MyAPIRequest {
MyOtherOwnedClass1 obj1;
MyOtherOwnedClass2 obj2;
//New Shared class which is being added as part of input now:
CommonlyOwnedClass newObj;
}
class MyAPIRequestObjectMapperFactory() {
static ObjectMapper newInstance(IonSystem ionSystem) {
final ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);
objectMapper.setVisibility(PropertyAccessor.GETTER, JsonAutoDetect.Visibility.NONE);
objectMapper.setVisibility(PropertyAccessor.IS_GETTER, JsonAutoDetect.Visibility.NONE);
return objectMapper;
}
}
class CommonlyOwnedClassObjectMapperFactory() {
static ObjectMapper newInstance(IonSystem ionSystem) {
final ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.NONE);
objectMapper.setVisibility(PropertyAccessor.GETTER, JsonAutoDetect.Visibility.ANY);
objectMapper.setVisibility(PropertyAccessor.IS_GETTER, JsonAutoDetect.Visibility.ANY);
return objectMapper;
}
}
Как я могу обновить мой ObjectMapper для использования другого ObjectMapper (предоставляется CommonlyOwnedClassObjectMapperFactory
) для newObj и продолжать использовать существующий объектный преобразователь (в MyAPIRequestObjectMapperFactory
) для остальных объектов в MyAPIRequest
?
Редактировать:
Я использую Jackson-2.8, но могу обновить до 2.9, если требуется