zoukankan      html  css  js  c++  java
  • java 反序列化PHP

    由于本人所在开发的项目,前期是由php完成的,这里需要对数据库中php序列化的字符串进行反序列化。

    1、引入maven依赖

    <!--反序列化 php-->
    <dependency>
    <groupId>org.sction</groupId>
    <artifactId>phprpc</artifactId>
    <version>3.0.2</version>
    </dependency>

    2、反序列化对象方法

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

    3、测试结果

    4、反序列化对象数组 这里的对象是字符串对象

    /**
    * 对php序列化的字符串,进行反序列化
    */
    public List<String> unserializePHParray(String content){
    List<String> list = new ArrayList<String>();
    PHPSerializer p = new PHPSerializer();
    if (StringUtils.isEmpty(content))
    return list;
    try {
    AssocArray array = (AssocArray) p.unserialize(content.getBytes());
    for (int i = 0; i < array.size(); i++) {
    String t = (String) Cast.cast(array.get(i), String.class);
    list.add(t);
    }
    }catch (Exception e){
    System.out.println("反序列化PHParray: " + content + " 失败!!!" );
    }
    return list;
    }

    5、测试结果

    public static void main(String args[]) {
    String content ="a:10:{i:0;s:18:"舞蹈(私教)";i:1;s:5:"Zumba";i:2;s:12:"完美塑造";i:3;s:12:"战斗有氧";i:4;s:12:"杠铃雕塑";i:5;s:12:"核心特训";i:6;s:12:"漫步舞林";i:7;s:12:"身体平衡";i:8;s:12:"高效冲击";i:9;s:12:"魅力热舞";}";
    CoachTool tool = new CoachTool();
    List<String> reusltList = tool.unserializePHParray(content);
    System.out.println(reusltList);

    }

    输出:[舞蹈(私教), Zumba, 完美塑造, 战斗有氧, 杠铃雕塑, 核心特训, 漫步舞林, 身体平衡, 高效冲击, 魅力热舞]
  • 相关阅读:
    [JLOI2011] 飞行路线
    高精度运算模板
    Dijkstra算法模板
    [SDOI2010] 外星千足虫
    [SDOI2006] 线性方程组
    [CTSC2014] 企鹅QQ
    模板三连击:树状数组+线段树+主席树
    [ZJOI2008] 树的统计
    [国家集训队] 礼物
    [洛谷P4720] [模板] 扩展卢卡斯
  • 原文地址:https://www.cnblogs.com/ctaixw/p/6213910.html
Copyright © 2011-2022 走看看