微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

序列化PHP =>以字符串格式反序列化JAVA / Serialize for php

我有一个这种格式的PHP数组:

<?PHP
$value = array("id" => 42, "user" => "superman");
echo serialize($value); 
?>

序列化:

a:2:{s:2:"id";i:42;s:4:"user";s:8:"superman";} 

我在java中将它接收到一个String中.
我怎么做在java中反序列化这个?
我知道java中的实现Serializable但在这种情况下不起作用.

我想以这种格式创建一个对象:

import java.io.Serializable;

public class Serial implements Serializable{
    private int mId;
    private String mUser;

    public Serial(int mId, String mUser) {
        super();
        this.mId = mId;
        this.mUser = mUser;
    }
    public int getId() {
        return mId;
    }
    public void setId(int id) {
        this.mId = id;
    }
    public String getUser() {
        return mUser;
    }
    public void setUser(String user) {
        this.mUser = user;
    }
}

之后我想再次创建从Java对象序列化的String,以便在PHP中进行反序列化;

谢谢你的帮助.

解决方法:

你不能用其他语言本地读取一种语言的序列化对象(每种语言都有自己的序列化协议/格式,不能保证它们可以读取其他语言格式),Java序列化对象被序列化为二进制格式和PHP提供文字格式.

您可以使用诸如Google’s protocol buffers之类的库,它们不正式支持PHP,但是有3rd party librariesPHP提供协议缓冲区支持.

Protocol buffers are Google’s language-neutral, platform-neutral,
extensible mechanism for serializing structured data – think XML, but
smaller, faster, and simpler. You define how you want your data to be
structured once, then you can use special generated source code to
easily write and read your structured data to and from a variety of
data streams and using a variety of languages – Java, C++, or Python.

如果您不喜欢它,您将需要开发自己的协议来将PHP序列化对象读取到Java对象中,您可以使用修改后的JSON库来执行此操作,因为我不相信s:2: “ID”;从您的示例序列化对象是有效的JSON.使用Java执行此操作时存在library,但PHP序列化格式不是“安全”,因为它可以包含空值,因此我建议不要使用它.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐