標籤:
最近工作中遇到一個需要解析php序列化後存入DB的array,
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;}
java還原序列化php序列化的對象