首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在PHP中反序列化Java序列化的对象

如何在PHP中反序列化Java序列化的对象
EN

Stack Overflow用户
提问于 2010-12-06 18:02:56
回答 5查看 4.4K关注 0票数 3

有什么方法在PHP中反序列化在Java中序列化的对象吗?如果我有一个实现序列化的Java类,并且使用ObjectOutputStream编写对象,并将结果转换为字符串,那么在PHP中是否有一种方法来接受这个字符串并从它创建一个类似的对象表示?

Java序列化数据是什么样子的?

响应:

代码语言:javascript
复制
���sr�com.site.entity.SessionV3Data���������xpsr�java.util.HashMap���`��F�

sessionIdt�0NmViMzUxYWItZDRmZC00MWY4LWFlMmUtZjg2YmZjZGUxNjg5xx?@�����w������t�

:)

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-12-06 18:12:33

我强烈建议你不要这样做。Java序列化是指Java实例保存和加载数据(要么传输到另一个Java应用程序,要么在同一个应用程序的调用之间进行持久化)。它根本就不是一个跨平台的协议。

我建议您在这两者之间建立一个API适配器层。将Java对象的内容输出到PHP中可以使用的格式,无论是XML、YAML,甚至是二进制格式(您可以在其中使用DataOutputStream)。

票数 7
EN

Stack Overflow用户

发布于 2010-12-06 18:12:58

什么是最简单的方式吃汤用筷子时,汤是放在一个碗与一个勺子?把汤放进杯子里,扔掉你的筷子,因为筷子是帮助消费汤的一个糟糕的选择。杯子(无处不在)消除了外部依赖,除了“嘴”和“可对生的拇指”,这两者都伴随着人类的标准库。

更优雅的解决方案是使用JSON序列化程序或XML序列化程序对该Java对象进行编码。协议缓冲区或任何其他有意跨语言序列化技术都会工作得很好,加上协议缓冲区可以有效地编码二进制数据。

票数 4
EN

Stack Overflow用户

发布于 2010-12-06 18:42:11

一段时间前我做了件事。但是,我没有让PHP读"Java序列化“格式。我做了oposite,也就是说,使Java将自己序列化为"PHP序列化“格式。这其实很容易。查看PHPSerializedResponseWriter类,它是Solr包的一部分:

https://github.com/terrancesnyder/solr-analytics/blob/master/solr/core/src/java/org/apache/solr/response/PHPSerializedResponseWriter.java

...then只需读取字符串并调用:

代码语言:javascript
复制
$result = unserialize($string);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4369457

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档