在Python中解码Java对象

1 投票
1 回答
1843 浏览
提问于 2025-04-17 06:50

我想知道能不能在Python中解码Java对象?我知道返回数据的Java类结构。数据是以“Transfer-Encoding: chunked”的头信息返回的。

还是说我需要把返回的数据发送成XML或JSON格式呢?

这是我得到的响应示例;(注意,有些控制字符在粘贴时被去掉了)

 -- response --
200 OK
Server:  Apache-Coyote/1.1
Transfer-Encoding:  chunked
Date:  Tue, 22 Nov 2011 13:24:41 GMT
��srjava.util.ArrayListx����a�IsizexpGwXsr,com.blah.blah.data.ClientInfos����8d�LdbNametLjava/lang/String;Ldescriptionq~xptdbname1t Customername1q~tdbname2tCustomername2sq~t

这个示例返回了两个客户的信息,格式是客户名和数据库名。

dbname1,customername1

dbname2,customername2

1 个回答

-1

--- 编辑后内容,增加了更多细节 ---

这个HTTP响应的内容是一个被序列化的Java对象。

Java序列化是一个把内存中的对象转换成适合传输的字节的过程,这样其他Java虚拟机(JVM)就能读取它。简单来说,你需要了解这个序列化的格式。如果没有添加自定义的序列化器,具体的协议可以在这里找到

接下来就是确保你能合理地把Java的数据字段映射到Python中。如果你想支持“往返”数据处理,你应该在数据结构的特殊“区域”中缓存一些有时会被丢弃的“Java信息”,这样你就能把数据序列化回相同的Java结构。

--- 原帖内容如下 ---

你要么是在拆解一个类(这很简单,因为Java的类结构非常严格,而且字节码到源代码的映射也很容易),要么是在处理数据。

如果是在处理数据,你其实并不是在解码Java,而是你能否顺利完成想做的事情,主要取决于你能否了解数据是如何编码的。因为你提到了“Transfer-Encoding: Chunked”这个头信息,我猜测你是在读取一个HTTP响应(包括头信息)。

几乎每种编程语言都有处理HTTP响应的库,因为网络服务非常流行。Python已经有一个HTTP客户端,具体可以参考这里

撰写回答