时间:2021-05-26
最近在做旧版程序迁移,旧的架构为常规的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 (empty($keys)) { $data[$firstKey] = $value; } else { if (!isset($data[$firstKey])) { $data[$firstKey] = []; } $item = &$data[$firstKey]; while (!empty($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;}输出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" } ]}到此这篇关于PHP实现chrome表单请求数据转换为接口使用的json数据的文章就介绍到这了,更多相关PHP json请求内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
小程序的上传文件接口的注意需要对接口返回的数据转换为JavaScript对象//JSON.parse()将JSON格式的数据转换为JavaScript对象JSO
在做接口自动化的时候,请求数据之前都是JSON格式的,Python有自带的包来解决。最近在做APP的接口,遇到XML格式的请求数据,费了很大劲来解决,解决方式是
Django之META与前后端交互1提交表单之GET前端提交数据与发送1)提交表单数据2)提交JSON数据后端的数据接收与响应1)接收GET请求数据2)接收PO
无论是网页还是移动端,都需要向服务器请求数据,那么作为php服务端,如何返回标准的数据呢?现在主流的数据格式无非就是json和xml,下面我们来看看如何用php
很多同学都习惯了使用发送get请求以及POST请求发送表单数据,但是如何使用postmanpost请求发送json数据呢.第一步:在post请求的header里