本文介绍了有没有办法通过python反序列化Java对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I stored the java object in hbase (i.e) Let's say I have an object 'User' with 3 parameters like firstname, middlename and lastname. I used the following code for serialization in java

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

并存储在hbase中,如存储完整对象(采用上述byte []格式) KeyValue对的一部分

and stored in hbase like 'storing complete object (in byte[] format of above) in the Value portion of the KeyValue pair'

它存储在hbase中,例如(示例)

It is stored in hbase like (Example)

column = container:container ,timestamp = 1480016194005,value = \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\x00\x01xp\ x00\x00\x00\x02\x00\x00\x01X\x967\xBA\xF0\x00\x00t\x00\x1Econtainer_393_5639181044834024t\x00\x06expandt\x00\ 02x02ert\x00\x08testadmin

column=container:container, timestamp=1480016194005, value=\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中使用了以下反序列化并将其转换回可读格式的对象

when I try to retrieve the data, I used the following deserialization in java and converted back to object of readable format

object = SerializationUtils.deserialize(bytes);

object = 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中,例如(示例)

It is stored in hbase like (Example)

column = container:container,timestamp = 1480016194005,value = \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

column=container:container, timestamp=1480016194005, value=\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对象

Is there a way to deserialize the java object via python

非常感谢

Hari

推荐答案

有一个适用于此的Python库:

There is a Python library for that:

使用似乎很容易:

import javaobj
jobj = self.read_file("obj5.ser")
pobj = javaobj.loads(jobj)
print(pobj)

这篇关于有没有办法通过python反序列化Java对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-05 10:09