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

来源:国外服务器 在您之前已被浏览:1 次
导读:目前正在解读《php数组序列化函数(php常用数组函数和用法)》的相关信息,《php数组序列化函数(php常用数组函数和用法)》是由用户自行发布的知识型内容!下面请观看由(国外主机 - www.2bp.net)用户发布《php数组序列化函数(php常用数组函数和用法)》的详细说明。
国外云主机,www.2 bp .net

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 {    PHPSerializer ps = new PHPSerializer();    String s;    s = (String) ps.unserialize(new String("s:12:"福哥真好";").getBytes(), String.class);    return s;}catch (Exception e){    e.printStackTrace();}php数组序列化函数(php常用数组函数和用法)

3.2 单整型类型

原数据就是一个整型数字

try {    PHPSerializer ps = new PHPSerializer();    Integer s;    s = (Integer) ps.unserialize(new String("i:518168;").getBytes(), Integer.class);    return s;}catch (Exception e){    e.printStackTrace();}

3.3 单双精类型

原数据就是一个小数

try {    PHPSerializer ps = new PHPSerializer();    Double s;    s = (Double) ps.unserialize(new String("d:518168.99;").getBytes(), Double.class);    return s;}catch (Exception e){    e.printStackTrace();}

3.4 NULL类型

原数据就是一个null,由于没有类型,反序列化会失败

try {    PHPSerializer ps = new PHPSerializer();    String s;    s = (String) ps.unserialize(new String("N;").getBytes(), String.class);    return s;}catch (Exception e){    e.printStackTrace();}

3.5 实体对象类型

如果原数据是一个对象(就是数组的下标为字符串的情况),那么就可以建立同样结构的实体对象,使用这个实体对象可以直接接收数组数据

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

3.5.1 实体对象

@Datapublic class MyUser {    Integer id;    String name;    String note;}

3.5.2 反序列化

try {    PHPSerializer ps = new PHPSerializer();    MyUser s;    s = (MyUser) ps.unserialize(new String("a:3:{s:2:"id";i:35;s:4:"name";s:15:"鬼谷子叔叔";s:4:"note";s:1:"s";}").getBytes(), MyUser.class);    return s;}catch (Exception e){    e.printStackTrace();}php数组序列化函数(php常用数组函数和用法)

3.6 数组类型

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

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

3.6.1 实体对象

@Datapublic class MyTag {    Integer id;    String tag;}

3.6.2 反序列化

try {    PHPSerializer ps = new PHPSerializer();    List<MyTag> s = new ArrayList<>();    AssocArray aa;    aa = (AssocArray) ps.unserialize(new String("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(int i=0;i<aa.size();i++){        s.add((MyTag) Cast.cast(aa.get(i), MyTag.class));    }    return s;}catch (Exception e){    e.printStackTrace();}php数组序列化函数(php常用数组函数和用法)

4. 总结

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

国外云主机,www.2 bp .net
提醒:《php数组序列化函数(php常用数组函数和用法)》最后刷新时间 2023-03-27 02:24:48,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《php数组序列化函数(php常用数组函数和用法)》该内容的真实性请自行鉴别。