zoukankan      html  css  js  c++  java
  • java反序列化php序列化的对象

    最近工作中遇到一个需要解析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;
    }
  • 相关阅读:
    F
    Common Subsequence
    Neighbor House
    Robberies(背包)
    Stock Exchange(LIS最长上升子序列问题)
    Compromise(LCS)
    POJ-3356 AGTC (最短编辑距离问题)
    Monkey and Banana(LIS最长上升子序列)
    网络编程之网络协议
    面向对象高级
  • 原文地址:https://www.cnblogs.com/ikuman/p/4539129.html
Copyright © 2011-2022 走看看