您的位置:首页 > 编程语言 > PHP开发

java反序列化php序列化的对象

2017-10-18 14:59 267 查看
最近工作中遇到一个需要解析php序列化后存入DB的array,

而我们项目是使用java,就需要反序列化,还好有一个第三方类库可以使用,项目地址:http://www.phprpc.org/zh_CN/docs/

<dependency>
<groupId>org.sction</groupId>
<artifactId>phprpc</artifactId>
<version>3.0.2</version>
</dependency>


使用时,需要知道被序列化的对象是单个对象还是被以array的形式序列化的

若是单个对象,直接可以反序列化

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;
}


若是array需要借助Cast类,转换成java对应的对象

public static List<Test> getUnserializeList(String content) throws Exception {
List<Test> list = new ArrayList<Test>();
PHPSerializer p = new PHPSerializer();
if (StringUtils.isEmpty(content))
return list;
AssocArray array = (AssocArray) p.unserialize(content.getBytes());
for (int i = 0; i < array.size(); i++) {
Test t = (Test) Cast.cast(array.get(i), Test.class);
list.add(t);
}
return list;
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  序列化 java php