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

来源:互联网 发布:seo分享ppt 编辑:程序博客网 时间:2024/05/24 07:21

最近工作中遇到一个需要解析php序列化后存入DB的array,

1
2
a:4:{i:0;a:2:{s:11:"province";s:8:"0016";s:7:"img";s:49:"20150117105023_kk-1.jpg";}
i:1;a:2:{s:11:"province";s:8:"0017";s:7:"img";s:49:"20150117105025_kk-1.jpg";}}

而我们项目是使用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;}
复制代码
原创粉丝点击