通信接口封装json、XML格式数据

1 篇文章 0 订阅

目前通信接口返回的数据大多为json格式或XML格式的数据,以下提供一个简单的思路

封装json格式数据

/**
 * 返回json格式通信数据
 * interger $code 状态码
 * string $message 提示信息
 * array $data 数据
 */
public static function jsonEncode($code, $message='', $data=array())
{
    if(!is_numeric($code)){
        return "";
    }

    $result = array(
        'code' => $code,
        'message' => $message,
        'data' => $data,
    );

    return json_encode($result);
}

封装XML格式通信数据

/**
 * 返回xml格式通信数据
 * interger $code 状态码
 * string $message 提示信息
 * array $data 数据
 */
public static function xmlEncode($code, $message='', $data=array())
{
    if(!is_numeric($code)){
        return "";
    }

    $result = array(
        'code' => $code,
        'message' => $message,
        'data' => $data,
    );

    header("Content-type:html/xml");
    $xml = "<root>";
    $xml .= self::xmlToEncode($result);
    $xml .= "</root>";

    return $xml;
}

/**
 * 对数据部分进行xml格式封装
 * array $data 数据
 */
public static function xmlToEncode($data)
{
    $xml = "";
    $attr = "";
    foreach($data as $key => $value){
        if(is_numeric($key)){
            $attr = "id = '{$key}'";
            $key = "item";
        }
        $xml .= "<{$key}{$attr}>";
        //判断第一次遍历的值是否为数据,若是则进行递归再次遍历
        $xml .= is_array($value) ? self::xmlToEncode($value) : $value;
        $xml .= "</{$key}>";
    }   
    return $xml;
}

综合以上两种格式进行数据输出

/**
 * 综合两种格式返回数据结果
 * interger $code 状态码
 * string $message 提示信息
 * array $data 数据
 */
public static function dataEncode($code, $message='', $data=array(), $type="")
{
    if(!is_numeric($code)){
        return "";
    }

    if(empty($type)){
        $type = isset($_GET['format']) ? $_GET['format'] : "json";
    }

    if(strtolower($type) == "json"){
        $result = self::jsonEncode($code, $message, $data);
    } elseif(strtolower($type) == "xml"){
        $result = self::xmlEncode($code, $message, $data);
    } else {
        return "请求数据格式错误";
    }

    return $result;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值