Я должен передать объект через систему, где я могу передавать только строки. Сериализация идеально подходит для того, что мне нужно, но я не могу заставить этот объект метрики правильно сериализоваться.
Java, создающая объект:
Map<String, HashMap<String, String>> metrics = new HashMap<String, HashMap<String, String>>();
String serializedObject = "";
try {
ByteArrayOutputStream bo = new ByteArrayOutputStream();
ObjectOutputStream so = new ObjectOutputStream(bo);
so.writeObject(metrics);
so.close();
serializedObject = bo.toString();
} catch (Exception e) {
System.out.println(e);
}
… передать serializedObject в виде строки…
Java, стерилизующий объект обратно в объект метрики.
Map<String, HashMap<String, String>> metrics = new HashMap<String, HashMap<String, String>>();
try {
byte b[] = serializedObject.getBytes();
ByteArrayInputStream bi = new ByteArrayInputStream(b);
ObjectInputStream si = new ObjectInputStream(bi);
metrics = (Map<String, HashMap<String, String>>) si.readObject();
si.close();
} catch (Exception e) {
System.out.println(e);
}
Я не получаю ошибок, но распечатка байтов сериализованного объекта показывает, что он слишком мал для данных, которые я сериализую.