有很多情况会涉及到php和java进行数据交换。一般情况是通过json数据格式去交换。但是对于那种比如:商城采用php进行开发,管理系统使用java语言开发,这其中就会涉及到数据交互,而正好php进行过数据序列化存储到数据库,而java还必须去解析,所以就会有这篇文章。开始我也上网查找过相关的工具类去进行解析,比如说我看到的一篇相关文章解决办法(在最后附录上)。下面介绍我我的方法如下:

1.这是我根据分析php序列化后的字符串进行的对序列化字符串的解析:

 public static Map<Object,Object> phpToJava(String str){str = "a:8:{s:5:\"phone\";s:6:\"111111\";s:9:\"mob_phone\";s:6:\"111111\";s:9:\"tel_phone\";N;s:7:\"address\";s:90:\"北京市东城区天天大厦B座-Барнаул-Алтайский край-Россия\";s:4:\"area\";s:55:\"Барнаул-Алтайский край-Россия\";s:6:\"street\";s:34:\"北京市东城区天天大厦B座\";s:7:\"zipcode\";s:9:\"王某某\";s:8:\"passport\";s:0:\"\";}";str=str.substring(5,str.length()-1);str = str.replaceAll("[s|i]:\\d+:", "").replaceAll("N", "\"\"");String[] split = str.split(";");HashMap<Object,Object> list =new HashMap<Object, Object>();for (int i = 0; i < split.length; i=i+2) {if(i%2==0){list.put(split[i].replaceAll("\"", ""), split[i+1].replaceAll("\"", ""));}}for(Map.Entry<Object, Object> map : list.entrySet()){System.out.print(map.getKey()+"=");System.out.println(map.getValue());}return list;}

2.通过main方法进行测试输出即可得到结果,返回值是一个map~

  public static void main(String[] args) {phpToJava2(null);}

****************************************************************************************************************************************************************************************

<<以下是从网站上搜到的工具类,可以尝试下>>

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, 完美塑造, 战斗有氧, 杠铃雕塑, 核心特训, 漫步舞林, 身体平衡, 高效冲击, 魅力热舞]

java 解析php序列化数据问题相关推荐

  1. Java解析JSON格式数据

    Java解析JSON格式的数据主要用到两个类JSONObject和JSONArray,这两个类在json-lib-2.4-jdk15包中,在使用JSONObject时除了需要这个包外还需要相关的依赖包 ...

  2. php序列化数据无法反解析,PHP-反序列化数据不起作用

    过去5个小时一直在这里工作,我很困惑.尝试了最荒谬的功能来尝试对其进行修复,但无济于事. 我正在从WP数据库中检索数据.在插入数据之前,已使用PHP的serialize()函数对1个数组进行了序列化. ...

  3. java 解析cad文件数据开源免费jar整理

    dxf文件格式解析数据可以用 <!-- https://mvnrepository.com/artifact/net.sourceforge/kabeja --> <dependen ...

  4. java解析多层json数据

    当出现多层json数据时(如下图) 需要得到lives–>0–>weather的数据(即"阴") 步骤如下: 1.先获取全部json数据,用StringBuilder来 ...

  5. Java解析html文件数据

    解析html文件方式 1.在pom.xml文件中引入依赖 <!--Jsoup解析html--><dependency><groupId>org.jsoup</ ...

  6. java解析ajax的数据_java ajax 请求后获取 json 数据 以及 使用 解析 ,解惑

    写这个内容是 因为...框架一直在用ajax ,,传输 json 但是一直不太明白为什么要这样配置, 以及 前端ajax 怎么 使用 后台传输过来的数据. 首先 是 spirng mvc 的 配置 c ...

  7. java rfc 二围数据_如何使用Java解析RFC 3339数据时间?

    所以,原则上这将使用不同的 SimpleDateFormat模式. 日期:yyyy >日期月份:MM > date-mday:dd 时间:HH time -minute:mm time-s ...

  8. java snakeyaml_JAVA使用SnakeYAML解析与序列化YAML

    1.概述 本文,我们将学习如何使用SnakeYAML库将 YAML文档转换为Java对象,以及JAVA对象如何序列化为YAML文档. 2.项目设置 要在项目中使用SnakeYAML,需要添加Maven ...

  9. java培训教程分享:Java中怎样将数据对象序列化和反序列化?

    本期为大家介绍的java培训教程是关于"Java中怎样将数据对象序列化和反序列化?"的内容,相信大家都知道,程序在运行过程中,可能需要将一些数据永久地保存到磁盘上,而数据在Java ...

最新文章

  1. open flash chart2 php,open flash chart2 图表导出到PDF,服务端语言为PHP
  2. 国产360等浏览器安装完flash升级程序不起作用的解决方案
  3. memset函数及其用法,C语言memset函数详解
  4. 文巾解题 100. 相同的树
  5. 【若依(ruoyi)】Swagger 上传接口
  6. dede如何做SEO,一起探讨下
  7. 微信小程序常见错误及基本排除方法
  8. Leetcode 335. 路径交叉(Self Crossing)
  9. Python3网络爬虫快速入门实战解析——对大佬部分代码失效的修改
  10. 软件工程专业英语专用名词翻译
  11. 最后两星期,怎么过6级?(最快攻略)
  12. 什么是负反馈电路?微分.积分电路?“自激”现象?
  13. 网页无法保存html文件,怎么保存无法保存的网页
  14. 云服务器需要芯片吗,什么时候手机不再需要芯片——计算云端化是不可逆转的未来...
  15. 服务器系统2016开始菜单,大法将致:将Windows Server 2016打造成个人办公系统,WIN2016打造成超级WIN10,WIN2016优化设...
  16. 美国人在世界各地随意干扰别国内政,发动战争,你认为这样做得对吗?
  17. 段誉和男人们的普遍困境
  18. win10查看计算机硬件配置,怎么看电脑配置,详细教您win10怎么看电脑配置
  19. 1.《剑指Java面试-Offer直通车》--计算机网络
  20. [Android GMS 认证] CTS Verifier 测试结果的迁移

热门文章

  1. HTML单页渐变背景响应式引导页源码
  2. 2019-01-23 寒假作业(一)
  3. 使用LinkDevelop进行全栈开发的准备
  4. python123动物重量排序_Python二级真题共12组前6组多项选择题,python,十二,套前,六套...
  5. 搞定需要HTTPS证书访问的WebAPI
  6. Linux 强制卸载挂载点
  7. 案例分析(三)linux-5.4 mmc无法挂载文件系统
  8. 成为JavaGC专家
  9. 海康读码器使用操作步骤(本文以500万像素读码器为例)
  10. 统信UOS 飞腾平台 单机搭建ETCD 无Leader节点