如何使用PHP编写一个mock json脚本

这期内容当中小编将会给大家带来有关如何使用PHP编写一个mock json脚本,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

代码如下:

<?php
/**
 * Mock Json for Javascript
 *
 * @author soulteary
 * @date 2014-06-15
 */
 
 
/**
 * 请求接口字段:字符集
 */
define('charset','charset');
 
/**
 * 请求接口字段:回调函数名
 */
define('callback','callback');
 
/**
 * 请求接口字段:跨域字段
 */
define('crossDomain','cross-domain');
 
 
/**
 * 输出mock数据
 * 如果存在mock.json文件,则数据从mock.js中获取
 *
 * @return string
 */
functionmockData()
{
    if(file_exists('mock.json')){
        $data=json_decode(file_get_contents('mock.json'));
    }else{
        $data=Array(
            'code'=>200,
            'desc'=>'Get the default data.',
            'login'=>true,
            'data'=>Array(
                'name'=>'test api.'
            )
        );
    }
    returnjson_encode($data);
}
 
 
/**
 * 输出字符集,允许结果为gbk、gb2312、utf-8
 * 如果非法或者未设置,输出utf-8
 *
 * @return string
 */
functioncharset()
{
    $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
 */
functionjsonGenerator()
{
    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());
        returnmockData();
    }
}
 
/**
 * 输出结果
 */
die(jsonGenerator());

如果你不想改动php里的data object,觉得麻烦,那么直接改动json好了,你或许会问,那我为啥不直接访问一个json呢,答:

1.你或许需要一个callback包装这个结果;
2.你或许期望这个json允许跨域请求;
3.你或许期望这个json可以自定义header编码…

复制代码 代码如下:

{
    "data":1,
    "w":"测试"
}

上述就是小编为大家分享的如何使用PHP编写一个mock json脚本了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注本站行业资讯频道。

相关推荐:

Python中实现与PHP完全一致的ICU音译规则转换器

本文介绍如何使用PyICU在Python中精确复现PHPTransliterator::createFromRules()的音译行为,包括NFD/NFC规范化、去除非间距符号与标点、转小写等完整ICU规则链,确保跨语言环境下的字符串转换结果100%一致。 本文介绍如何使用pyicu在python中精...

如何高效解析超大 JSON 行格式文件(JSONL/NDJSON)

本文介绍如何正确处理以换行分隔的json对象(jsonl格式)大文件,避免误用流式json解析器(如ijson)导致的“trailinggarbage”错误,并提供简洁、内存友好的标准库解决方案。 本文介绍如何正确处理以换行分隔的json对象(jsonl格式)大文件,避免误用流式json解析器(如i...

如何高效流式处理超大JSON行格式文件(JSON Lines格式)

本文介绍如何正确处理以换行分隔的多条json对象(即jsonlines格式)的大文件,避免误用ijson导致的解析错误,并提供轻量、稳定、内存友好的纯python流式读取方案。 本文介绍如何正确处理以换行分隔的多条json对象(即jsonlines格式)的大文件,避免误用ijson导致的解析错误,并...

如何高效流式处理超大JSON行格式文件(JSON Lines)

本文介绍如何正确处理以jsonlines格式存储的超大文件(如3gb的多行独立json),避免使用ijson导致的“trailinggarbage”错误,并提供简洁、内存友好的标准库解决方案。 本文介绍如何正确处理以jsonlines格式存储的超大文件(如3gb的多行独立json),避免使用ijso...

Python 中使用 json.dump 实现 JSON 文件的美观格式化输出

本文介绍如何通过json.dump()的indent参数,将Python字典序列化为结构清晰、可读性强的缩进式JSON文件,避免默认紧凑格式带来的阅读困难。 本文介绍如何通过`json.dump()`的`indent`参数,将python字典序列化为结构清晰、可读性强的缩进式json文件,避免默认紧...