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, 完美塑造, 战斗有氧, 杠铃雕塑, 核心特训, 漫步舞林, 身体平衡, 高效冲击, 魅力热舞]
  • 相关阅读:
    USACO Sabotage
    USACO Telephone Lines
    NOIP 2012 借教室
    洛谷 P1902 刺杀大使
    VIJOS-P1450 包裹快递
    JDOJ 1770 埃及分数
    USACO Monthly Expense
    7.modifier插件的自定义和使用
    6.function自定义插件的方法和使用
    5.Smart使用内置函数或者自定义函数
  • 原文地址:https://www.cnblogs.com/ctaixw/p/6213910.html
Copyright © 2011-2022 走看看