由於本人所在開發的項目,前期是由php完成的,這里需要對數據庫中php序列化的字符串進行反序列化。
1、引入maven依賴
<!--反序列化 php-->
<dependency>
<groupId>org.sction</groupId>
<artifactId>phprpc</artifactId>
<version>3.0.2</version>
</dependency>
2、反序列化對象方法
public static Test getUnserialize(String content) throws Exception { PHPSerializer p = new PHPSerializer(); if (StringUtils.isEmpty(content)) return null; Test t = (Test) p.unserialize(content.getBytes(),Test.class); return t; }
3、測試結果
4、反序列化對象數組 這里的對象是字符串對象
/**
* 對php序列化的字符串,進行反序列化
*/
public List<String> unserializePHParray(String content){
List<String> list = new ArrayList<String>();
PHPSerializer p = new PHPSerializer();
if (StringUtils.isEmpty(content))
return list;
try {
AssocArray array = (AssocArray) p.unserialize(content.getBytes());
for (int i = 0; i < array.size(); i++) {
String t = (String) Cast.cast(array.get(i), String.class);
list.add(t);
}
}catch (Exception e){
System.out.println("反序列化PHParray: " + content + " 失敗!!!" );
}
return list;
}
5、測試結果
public static void main(String args[]) {
String content ="a:10:{i:0;s:18:\"舞蹈(私教)\";i:1;s:5:\"Zumba\";i:2;s:12:\"完美塑造\";i:3;s:12:\"戰斗有氧\";i:4;s:12:\"杠鈴雕塑\";i:5;s:12:\"核心特訓\";i:6;s:12:\"漫步舞林\";i:7;s:12:\"身體平衡\";i:8;s:12:\"高效沖擊\";i:9;s:12:\"魅力熱舞\";}";
CoachTool tool = new CoachTool();
List<String> reusltList = tool.unserializePHParray(content);
System.out.println(reusltList);
}
輸出:[舞蹈(私教), Zumba, 完美塑造, 戰斗有氧, 杠鈴雕塑, 核心特訓, 漫步舞林, 身體平衡, 高效沖擊, 魅力熱舞]