PHP实现chrome表单请求数据转换为接口使用的json数据
发布:smiling 来源: PHP粉丝网 添加日期:2022-04-16 13:14:50 浏览: 评论:0
这篇文章主要介绍了PHP实现chrome表单请求数据转换为接口使用的json数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
为什么要写转换程序
最近在做旧版程序迁移,旧的架构为常规的MVC模式,新版架构全部改成restful架构。
由于改版数据是一致的,但是请求结构不一致,新版的请求全部以json形式提交,为了方便测试,之前一直都是直接在浏览器打开开发者工具,然后把请求内容复制过来,然后手动改成json形式,由于之前数据量比较少,暂时未发现测试时候不方便的情况,但是今天遇到了数据比较多的情况,于是我想,为啥不写一段转换程序呢?
本身来说,程序的初衷应该是提高工作效率,这也是我之前缺少反思的地方,因此写下这篇文章做个记录。
代码
废话不多说,直接上代码,有啥不足的地方,后续有时间再做研究。
- <?php
- // 文件路经
- $f = './t.data';
- $content = file_get_contents($f);
- $rows = explode("\n", $content);
- $data = [];
- foreach ($rows as $row) {
- // 分割key和value
- $rowInfo = explode(':', $row);
- $keyInfo = array_shift($rowInfo);
- $value = trim(implode(':', $rowInfo));
- $keyArray = getCharArray($keyInfo);
- $keyItem = '';
- $keys = [];
- foreach ($keyArray as $char) {
- if ($char == '[') {
- $keys[] = $keyItem;
- $keyItem = '';
- } elseif ($char == ']') {
- continue;
- } else {
- $keyItem .= $char;
- }
- }
- $keys[] = $keyItem;
- // 驼峰转下划线
- $keys = array_map(function ($item) {
- return strtolower(preg_replace('/(?<=[a-z])([A-Z])/', '_$1', $item));
- }, $keys);
- $firstKey = array_shift($keys);
- if (emptyempty($keys)) {
- $data[$firstKey] = $value;
- } else {
- if (!isset($data[$firstKey])) {
- $data[$firstKey] = [];
- }
- $item = &$data[$firstKey];
- while (!emptyempty($keys)) {
- $currentKey = array_shift($keys);
- if (!isset($item[$currentKey])) {
- $item[$currentKey] = [];
- }
- $item = &$item[$currentKey];
- }
- $item = $value;
- unset($item);
- }
- }
- echo json_encode($data, JSON_UNESCAPED_UNICODE);
- /**
- * 字符串转字符数组
- *
- * @param string $string
- *
- * @return array
- */
- function getCharArray(string $string)
- {
- $strlen = mb_strlen($string);
- $i = 0;
- $charArray = [];
- while ($i < $strlen) {
- $charArray[] = mb_substr($string, $i, 1);
- $i++;
- }
- return $charArray;
- }
示例文件:
- thumbnail: https://avatar-static.segmentfault.com/393/562/3935623170-1140000000142909
- name: 101 新手上路
- description: 面向新手开发者的问题集中营
- sidebar: 欢迎来到 SegmentFault 101 新手上路问答。如果你是开发新手,有各种各样的疑惑,但又害怕提出来被嘲笑,欢迎在此提问。本区禁止嘲讽,请大家认真解答问题。
- admins[0][user_id]: 1030000000094051
- admins[0][isNoticeSite]: 0
- admins[0][isNoticeMail]: 0
- admins[1][user_id]: 1030000000091305
- admins[1][isNoticeSite]: 0
- admins[1][isNoticeMail]: 0
- admins[2][user_id]: 1030000000146026
- admins[2][isNoticeSite]: 0
- admins[2][isNoticeMail]: 0
- admins[3][user_id]: 1030000000141721
- admins[3][isNoticeSite]: 0
- admins[3][isNoticeMail]: 0
- admins[4][user_id]: 1030000000142354
- admins[4][isNoticeSite]: 0
- admins[4][isNoticeMail]: 0
- admins[5][user_id]: 1030000000144141
- admins[5][isNoticeSite]: 0
- admins[5][isNoticeMail]: 0
- admins[6][user_id]: 1030000000091353
- admins[6][isNoticeSite]: 0
- admins[6][isNoticeMail]: 0
输出json
- {
- "thumbnail": " https:\/\/avatar-static.segmentfault.com\/393\/562\/3935623170-1140000000142909",
- "name": " 101 新手上路",
- "description": " 面向新手开发者的问题集中营",
- "sidebar": " 欢迎来到 SegmentFault 101 新手上路问答。如果你是开发新手,有各种各样的疑惑,但又害怕提出来被嘲笑,欢迎在此提问。本区禁止嘲讽,请大家认真解答问题。",
- "admins": [
- {
- "user_id": " 1030000000094051",
- "is_notice_site": " 0",
- "is_notice_mail": " 0"
- },
- {
- "user_id": " 1030000000091305",
- "is_notice_site": " 0",
- "is_notice_mail": " 0"
- },
- {
- "user_id": " 1030000000146026",
- "is_notice_site": " 0",
- "is_notice_mail": " 0"
- },
- {
- "user_id": " 1030000000141721",
- "is_notice_site": " 0",
- "is_notice_mail": " 0"
- },
- {
- "user_id": " 1030000000142354",
- "is_notice_site": " 0",
- "is_notice_mail": " 0"
- },
- {
- "user_id": " 1030000000144141",
- "is_notice_site": " 0",
- "is_notice_mail": " 0"
- },
- {
- "user_id": " 1030000000091353",
- "is_notice_site": " 0",
- "is_notice_mail": " 0"
- }
- ]
- }
Tags: chrome表单请求 json
- 上一篇:Git命令之分支详解
- 下一篇:最后一页
相关文章
- ·淘宝API返回的json数据无法用json_decode的问题(2013-12-05)
- ·php中json_encode格式中文问题解决方法(2013-12-06)
- ·PHP JSON数据处理实例程序用法(2014-01-06)
- ·php 通过curl post发送json数据实例(2014-01-10)
- ·php json_encode()函数中文编码乱码解决方法(2014-01-16)
- ·PHP中JSON的应用方法(2014-05-19)
- ·php输出json格式数据的例子(2014-06-13)
- ·php中GBK/GB2312页面使用json_decode()中文丢失(2014-07-03)
- ·PHP JSON数据的创建和解析程序代码(2014-07-22)
- ·PHP JSONP跨域实现程序详解(2014-07-22)
- ·PHP 与 js json的通信实例(2014-08-15)
- ·PHP的json_encode使用分析说明(2014-08-27)
- ·php利用json数据实现跨域操作实例(2014-09-02)
- ·Android中的JSONObject和JSONArray解析json数据(2014-09-05)
- ·php解析JSON 数据(2014-09-05)
- ·php检测数据是否为json字符(2014-09-21)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)