Msgpack Универсальная сериализация / десериализация
Я использую msgpack интегрированный с платформой Axon. Поэтому в обработчике событий аксона я получаю объект во время выполнения, который может быть любого типа. Поскольку тип объекта неизвестен, я хочу использовать универсальную сериализацию / десериализацию. Сериализация выполнена правильно, но проблема возникает, когда я десериализирую поток байтов. например:
public <S, T> T deserialize(SerializedObject<S> serializedObject) {
byte[] serializedBytes= (byte[]) serializedObject.getData();
Object bytes = null;
try {
bytes=objectMapper.readValue(serializedBytes,Object.class);
System.out.println("After deserialization : "+bytes);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return (T) bytes;
}
где serializedObject имеет пользовательский метод getData(), который содержит сериализованные байты. Здесь я читаю значение и даю представление как Object.class
Я всегда получаю LinkedHashMap
в возвращаемом значении для цели. Существует ли какой-либо стандартный способ выполнения ОБЩЕЙ сериализации / десериализации для любого типа объекта с использованием msgpack.
1 ответ
Без информации о типе невозможно десериализовать объект во время выполнения, используя msgpack, см. Здесь