[英]Serialize PHP => Unserialize JAVA / Serialize for php in string format
我有這種格式的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中implements Serializable
的implements 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;
}
}
在那之后,我想創建另一個時間,將String
從Java對象序列化以在PHP中反序列化。
謝謝你的幫助。
您無法以本機語言讀取另一種語言的序列化對象(每種語言都有各自的序列化協議/格式,不能保證它們可以讀取另一種格式),Java序列化的對象序列化為二進制格式,而您提供的PHP文字格式。
您可以使用諸如Google的協議緩沖區之類的庫,它們並不正式支持PHP,但是有第三方庫提供了對PHP的協議緩沖區支持。
協議緩沖區是Google的與語言無關 ,與平台無關 ,可擴展的機制,用於對結構化數據進行序列化 (例如XML),但更小,更快,更簡單。 您可以定義如何一次構造數據,然后可以使用生成的特殊源代碼輕松地使用各種語言(Java,C ++或Python)在各種數據流之間來回寫入和讀取結構化數據。
如果您不喜歡它,則需要開發自己的協議以將PHP的序列化對象讀入Java對象,您也許可以使用修改后的JSON庫來實現此目的,因為我不相信s:2:"id";
樣本序列化對象中的有效JSON。 有一個使用Java進行此操作的庫 ,但是PHP序列化格式不是“安全”的,因為它可能包含空值,所以我建議不要這樣做。
對您來說有點晚,但對其他人(包括我)可能會有用:
您可以檢查這個問題 ,它有很多答案。 對於那些沒有時間閱讀的人,這里是它帶來的主要鏈接:
但是,正如@Robadob(和所有開發人員)所說的那樣,完成這種工作的最可靠方法是使用標准格式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.