本文使用「署名 4.0 国际 (CC BY 4.0)」许可协议,欢迎转载、或重新修改使用,但需要注明来源。 [署名 4.0 国际 (CC BY 4.0)](https://creativecommons.org/licenses/by/4.0/deed.zh) 本文作者: 苏洋 创建时间: 2014年06月15日 统计字数: 1445字 阅读时间: 3分钟阅读 本文链接: https://soulteary.com/2014/06/15/simple-mock-json-via-php.html ----- # 最简单的 Mock JSON 脚本 现在有太多方法去mock,不过当还是要连接到远程服务器上测试真正的返回的时候,如果机器上没有跑node而且有php的话,用这货来临时mock一下,或许更轻松。 ```php 200, 'desc' => 'Get the default data.', 'login' => true, 'data' => Array( 'name' => 'test api.' ) ); } return json_encode($data); } /** * 输出字符集,允许结果为gbk、gb2312、utf-8 * 如果非法或者未设置,输出utf-8 * * @return string */ function charset() { $ret = 'utf-8'; if (empty($_REQUEST[charset])) { return $ret; } else { $charset = strtolower($_REQUEST[charset]); if (in_array($charset, array('gbk', 'gb2312'), true)) { return $charset; } else { return $ret; } } } /** * 拼装json数据 * * @return string */ function jsonGenerator() { if (!empty($_REQUEST[callback])) { header('Content-Type: application/javascript; charset=' . charset()); return $_REQUEST[callback] . "(" . mockData() . ");"; } else { if (!empty($_REQUEST[crossDomain])) { header("Access-Control-Allow-Origin: *"); }; header('Content-type: application/json; charset=' . charset()); return mockData(); } } /** * 输出结果 */ die(jsonGenerator()); ``` 如果你不想改动php里的data object,觉得麻烦,那么直接改动json好了,你或许会问,那我为啥不直接访问一个json呢,答: 1. 你或许需要一个callback包装这个结果; 2. 你或许期望这个json允许跨域请求; 3. 你或许期望这个json可以自定义header编码... ```js { "data": 1, "w": "测试" } ``` 代码很简单,就不过多描述了。