在Python中解码Java对象
我想知道能不能在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客户端,具体可以参考这里。