php常用数组函数和用法(php数组序列化函数)

1. 介绍

1.1 介绍

福哥最近在把一部分功能从PHP转入Java里面,在处理PHP的序列化(Serialize)数据的时候遇到了问题,经过一番折腾找到了一个在Java里实现序列化的功能的第三方库。

现在,福哥将这个库的使用方法交给大家!!

2. 依赖

首先导入phprpc的依赖库

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

3. 使用

使用PHPSerializer反序列化经过PHP序列化过的字符串需要知道目标字符串里存的是什么类型的数据,不同的数据类型是需要使用不同的实体对象去接收反射数据的。

3.1 单字符串类型

原数据就是一个字符串

try{PHPSerializerps=newPHPSerializer();Strings;s=(String)ps.unserialize(newString("s:12:"福哥真好";").getBytes(),String.class);returns;}catch(Exceptione){e.printStackTrace();}

php常用数组函数和用法(php数组序列化函数)

3.6 数组类型

如果原数据是一个数组(就是数组下标为数字的情况)的话,那么可以使用AssocArray类型将结果集先收集起来,然后再使用Cast对象将数据转换成Java对应的类型

注意:实体对象必须是public的

3.6.1 实体对象

@DatapublicclassMyTag{Integerid;Stringtag;}

3.6.2 反序列化

try{PHPSerializerps=newPHPSerializer();List<MyTag>s=newArrayList<>();AssocArrayaa;aa=(AssocArray)ps.unserialize(newString("a:3:{i:0;a:2:{s:2:"id";i:15;s:3:"tag";s:5:"C/C++";}i:1;a:2:{s:2:"id";i:16;s:3:"tag";s:4:"Java";}i:2;a:2:{s:2:"id";i:18;s:3:"tag";s:3:"PHP";}}").getBytes());for(inti=0;i<aa.size();i++){s.add((MyTag)Cast.cast(aa.get(i),MyTag.class));}returns;}catch(Exceptione){e.printStackTrace();}

php常用数组函数和用法(php数组序列化函数)

4. 总结

可以看到PHPSerializer基本可以满足我们在Java反序列化使用PHP语言序列化的数据结构的需要了。

(0)
小多多的头像小多多创始人

相关推荐

发表回复

登录后才能评论