我有一个Object数组的对象数组。我想将它转换为一个字节数组,然后将其作为Object数组的数组接收回来。我曾与ByteArrayOutputStream
配合使用ObjectOutputStream
将其转换为字节数组:对象数组的字节数组
ByteArrayOutputStream b = new BAOS();
ObjectOutputStream o = new OOS();
o.writeObject(obj) // obj being the array
然后,当我试着去阅读它,所有我得到的是只有第一阵列的内容。接收到的对象数组的大小也等于单个数组的大小。
我曾尝试使用writeObject()
迭代,但无济于事。
好了,所以进一步我试图多维阵列的方法,以及:
byte[] firstArr = new byte[1];
oos.writeObject(orgArr[0]);
firstArr = baos.toByteArray();
byte[] secondArr = new byte[1];
oos.writeObject(orgArr[1]);
secondArr = baos.toByteArray();
byte[] combined = new byte[2];
combined[0] = firstArr[0];
combined[1] = secondArr[1];
两个阵列是相同的,相同的长度和两个firstArr
和secondArr
是对象阵列。所以,我有问题是,当我使用反序列化:
ObjectInputStream ois = new ObjectInputStream(
new ByteArrayInputStream(om.nakedPayload));
Object[] list = (Object[]) ois.readObject();
阵列列表的长度返回是38.哪个的任2门阵列(firstArr
/secondArr
)的长度。此外,它包含的数据只是firstArr
。 om.nakedPayload
是我从卡夫卡主题中读取的数据。我们在这里写了一个包装器,它基本上是为了读写目的而预计的一个byte[]
。
如果只显示几行代码,很难说出错误是什么。 –
了解,使用“序列化”是非常复杂的东西(并且有点buggy除外)。不是因为心灵的隐隐。 –