有没有办法通过python反序列化java对象

问题描述 投票:0回答:1

我将 java 对象存储在 hbase 中(即)假设我有一个对象“User”,它有 3 个参数,如名字、中间名和姓氏。我在java中使用以下代码进行序列化

Object object = (object) user;    
byte[] byteData = SerializationUtils.serialize((Serializable) object);

并存储在 hbase 中,就像“将完整的对象(以上面的 byte[] 格式)存储在 KeyValue 对的 Value 部分中”

它像(示例)一样存储在 hbase 中

列=容器:容器,时间戳=1480016194005,值=\xAC\xED\x00\x05sr\x00&com.test.container\x07\x89\x83\xFA\x7F\xD0F\xA5\x02\x00\x08I\x00\ x07classIdJ\x00\x14dateTimeInLongFormatZ\x00\x04rootZ\x00\x09undefinedL\x00\x03keyt\x00\x12Ljava/lang/String;L\x00\x04modeq\x00~\x00\x01L\x00\x04nameq\x00~\x00\x01L\ x00\x06userIdq\x00~\x00\x01xp\x00\x00\x00\x02\x00\x00\x01X\x967\xBA\xF0\x00\x00t\x00\x1Econtainer_393_5639181044834024t\x00\x06expandt\x00 \x02ert\x00\x08testadmin

当我尝试检索数据时,我在java中使用了以下反序列化并转换回可读格式的对象

对象 = SerializationUtils.deserialize(bytes);

I would like to retrieve the data stored in java format via happybase using python and I achieved it and received the data as available in hbase like

它像(示例)一样存储在 hbase 中

列=容器:容器,时间戳=1480016194005,值=\xAC\xED\x00\x05sr\x00&com.test.container\x07\x89\x83\xFA\x7F\xD0F\xA5\x02\x00\x08I\x00\ x07classIdJ\x00\x14dateTimeInLongFormatZ\x00\x04rootZ\x00\x09undefinedL\x00\x03keyt\x00\x12Ljava/lang/String;L\x00\x04modeq\x00~\x00\x01L\x00\x04nameq\x00~\x00\x01L\ x00\x06userIdq\x00~\x00\x01xp\x00\x00\x00\x02\x00\x00\x01X\x967\xBA\xF0\x00\x00t\x00\x1Econtainer_393_5639181044834024t\x00\x06expandt\x00 \x02ert\x00\x08testadmin

有没有办法通过python反序列化java对象

非常感谢

哈里

java python serialization hbase deserialization
1个回答
9
投票

有一个 Python 3 库:

https://pypi.python.org/pypi/javaobj-py3

使用起来似乎很简单:

from pathlib import Path

import javaobj

jobj = Path('…').read_bytes()
pobj = javaobj.loads(jobj)
print(pobj)
© www.soinside.com 2019 - 2024. All rights reserved.