java 解析php序列化数据问题
有很多情况会涉及到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序列化数据问题相关推荐
- Java解析JSON格式数据
Java解析JSON格式的数据主要用到两个类JSONObject和JSONArray,这两个类在json-lib-2.4-jdk15包中,在使用JSONObject时除了需要这个包外还需要相关的依赖包 ...
- php序列化数据无法反解析,PHP-反序列化数据不起作用
过去5个小时一直在这里工作,我很困惑.尝试了最荒谬的功能来尝试对其进行修复,但无济于事. 我正在从WP数据库中检索数据.在插入数据之前,已使用PHP的serialize()函数对1个数组进行了序列化. ...
- java 解析cad文件数据开源免费jar整理
dxf文件格式解析数据可以用 <!-- https://mvnrepository.com/artifact/net.sourceforge/kabeja --> <dependen ...
- java解析多层json数据
当出现多层json数据时(如下图) 需要得到lives–>0–>weather的数据(即"阴") 步骤如下: 1.先获取全部json数据,用StringBuilder来 ...
- Java解析html文件数据
解析html文件方式 1.在pom.xml文件中引入依赖 <!--Jsoup解析html--><dependency><groupId>org.jsoup</ ...
- java解析ajax的数据_java ajax 请求后获取 json 数据 以及 使用 解析 ,解惑
写这个内容是 因为...框架一直在用ajax ,,传输 json 但是一直不太明白为什么要这样配置, 以及 前端ajax 怎么 使用 后台传输过来的数据. 首先 是 spirng mvc 的 配置 c ...
- java rfc 二围数据_如何使用Java解析RFC 3339数据时间?
所以,原则上这将使用不同的 SimpleDateFormat模式. 日期:yyyy >日期月份:MM > date-mday:dd 时间:HH time -minute:mm time-s ...
- java snakeyaml_JAVA使用SnakeYAML解析与序列化YAML
1.概述 本文,我们将学习如何使用SnakeYAML库将 YAML文档转换为Java对象,以及JAVA对象如何序列化为YAML文档. 2.项目设置 要在项目中使用SnakeYAML,需要添加Maven ...
- java培训教程分享:Java中怎样将数据对象序列化和反序列化?
本期为大家介绍的java培训教程是关于"Java中怎样将数据对象序列化和反序列化?"的内容,相信大家都知道,程序在运行过程中,可能需要将一些数据永久地保存到磁盘上,而数据在Java ...
最新文章
- open flash chart2 php,open flash chart2 图表导出到PDF,服务端语言为PHP
- 国产360等浏览器安装完flash升级程序不起作用的解决方案
- memset函数及其用法,C语言memset函数详解
- 文巾解题 100. 相同的树
- 【若依(ruoyi)】Swagger 上传接口
- dede如何做SEO,一起探讨下
- 微信小程序常见错误及基本排除方法
- Leetcode 335. 路径交叉(Self Crossing)
- Python3网络爬虫快速入门实战解析——对大佬部分代码失效的修改
- 软件工程专业英语专用名词翻译
- 最后两星期,怎么过6级?(最快攻略)
- 什么是负反馈电路?微分.积分电路?“自激”现象?
- 网页无法保存html文件,怎么保存无法保存的网页
- 云服务器需要芯片吗,什么时候手机不再需要芯片——计算云端化是不可逆转的未来...
- 服务器系统2016开始菜单,大法将致:将Windows Server 2016打造成个人办公系统,WIN2016打造成超级WIN10,WIN2016优化设...
- 美国人在世界各地随意干扰别国内政,发动战争,你认为这样做得对吗?
- 段誉和男人们的普遍困境
- win10查看计算机硬件配置,怎么看电脑配置,详细教您win10怎么看电脑配置
- 1.《剑指Java面试-Offer直通车》--计算机网络
- [Android GMS 认证] CTS Verifier 测试结果的迁移
热门文章
- HTML单页渐变背景响应式引导页源码
- 2019-01-23 寒假作业(一)
- 使用LinkDevelop进行全栈开发的准备
- python123动物重量排序_Python二级真题共12组前6组多项选择题,python,十二,套前,六套...
- 搞定需要HTTPS证书访问的WebAPI
- Linux 强制卸载挂载点
- 案例分析(三)linux-5.4 mmc无法挂载文件系统
- 成为JavaGC专家
- 海康读码器使用操作步骤(本文以500万像素读码器为例)
- 统信UOS 飞腾平台 单机搭建ETCD 无Leader节点