PHP封装XML和JSON格式数据接口操作示例


Posted in PHP onMarch 06, 2019

本文实例讲述了PHP封装XML和JSON格式数据接口操作。分享给大家供大家参考,具体如下:

使用PHP开发app后端的接口时,我们需要返回数据,最常用的就是XML和JSON格式的数据,那么样返回呢?

1.JSON

json数据是最容制造的,只要使用php自带的json_encode()函数就可以简单的制作出json数据了

2.XML

xml数据就要复杂一点了,让我们看一下xml数据的格式

PHP封装XML和JSON格式数据接口操作示例

那么怎样构造呢?

3.制作生产接口数据的类

<?php
//定义生成接口数据类
class Api
{
  /*
   * 生成json数据格式
   * @param integer $code 状态码
   * @param string $message 提示信息
   * $param array $data 数据
   * return string
   */
   public static function json($code, $message = '', $data = array())
   {
     //如果状态码不是数字就返回空
     if(!is_numeric($code)) {
       return '';
     }
     //构造返回数据
     $result = array(
       'code' = > $code,
       'message' => $message,
       'data' => $data
     );
     return json_encode($result);
   }
  /*
   * 生成xml数据格式
   * @param integer $code 状态码
   * @param string $message 提示信息
   * @param array $data 数据
   * return string
   */
   public static function xml($code, $message = '', $data = array())
   {
     if(!is_numeric($code)) {
       return '';
     }
     $result = array(
       'code' => $code,
       'message' => $message,
       'data' => $data
     );
     //构造xml数据
     //使返回的数据以xml格式显示
     header("Content-Type:text/xml");
     //开始拼xml数据
     $xml = "<?xml version='1.0' encoding='UTF-8'?>";
     //根节点
     $xml .= "<root>";
     //创建一个额外函数来构造
     $xml .= self::xmlToEncode($result);
     $xml .= "</root>";
     return $xml;
   }
   //构造xml数据函数
   public static function xmlToEncode($data)
   {
     $xml = "";
     $attr = "";
     foreach($data as $key => $value)
     {
       //如果传递的数组是没有键值的话,<0>,<1>这种类型的节点是不合法的,所有就要判断了,如果是数字就这样<item id='0'>显示
       if(is_numeric($key)) {
         $attr = "id = '{$key}'";
         $key = "item";
       }
       //如果是数字就加上$attr
       $xml .= "<{$key}{$attr}>";
       //如果value是数组就进行递归
       $xml .= is_array($value) ? self::xmlToEncode($value) : $value;
       $xml .= "</{$key}>";
     }
     return $xml;
   }
}
//下面就来测试一下吧
$data = array(
  'id' => 1,
  'name' => 'zjp',
  'content' => array(
    'sex' => '男',
    'age' => '24',
    'num' => array(1,3,5,7,9)
  )
);
$xml = Api::xml(200, "返回数据成功", $data);
$json = Api::json(200, "返回数据成功", $data);
?>

xml格式数据:上面那张介绍xml格式

json格式数据:

PHP封装XML和JSON格式数据接口操作示例

PS:本站还提供了如下XML与JSON相关工具,方便大家参考使用:

在线XML/JSON互相转换工具:
http://tools.3water.com/code/xmljson

php代码在线格式化美化工具:
http://tools.3water.com/code/phpformat

在线XML格式化/压缩工具:
http://tools.3water.com/code/xmlformat

json代码在线格式化/美化/压缩/编辑/转换工具:
http://tools.3water.com/code/jsoncodeformat

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
谈谈PHP语法(3)
Oct 09 PHP
ThinkPHP写数组插入与获取最新插入数据ID实例
Nov 03 PHP
分享一则PHP定义函数代码
Feb 26 PHP
PHP响应post请求上传文件的方法
Dec 17 PHP
php+mysql实现的二级联动菜单效果详解
May 10 PHP
php微信公众平台交互与接口详解
Nov 28 PHP
magento后台无法登录解决办法的两种方法
Dec 09 PHP
Yii框架参数化查询中IN查询只能查询一个的解决方法
May 20 PHP
php出租房数据管理及搜索页面
May 23 PHP
php mysql数据库操作类(实例讲解)
Aug 06 PHP
PHP实现PDO操作mysql存储过程示例
Feb 13 PHP
php多进程应用场景实例详解
Jul 22 PHP
浅谈PHP封装CURL
Mar 06 #PHP
Yaf框架封装的MySQL数据库操作示例
Mar 06 #PHP
PHP实现的敏感词过滤方法示例
Mar 06 #PHP
详解PHP 二维数组排序保持键名不变
Mar 06 #PHP
PHP获取ttf格式文件字体名的方法示例
Mar 06 #PHP
php ajax confirm 删除实例详解
Mar 06 #PHP
详解PHP多个进程配合redis的有序集合实现大文件去重
Mar 06 #PHP
You might like
php中3des加密代码(完全与.net中的兼容)
2012/08/02 PHP
CodeIgniter记录错误日志的方法全面总结
2016/05/17 PHP
PHP的mysqli_sqlstate()函数讲解
2019/01/23 PHP
laravel5.5添加echarts实现画图功能的方法
2019/10/09 PHP
laravel 修改.htaccess文件 重定向public的解决方法
2019/10/12 PHP
javascript instanceof,typeof的区别
2010/03/24 Javascript
与jquery serializeArray()一起使用的函数,主要来方便提交表单
2011/01/31 Javascript
实例讲解JS中数组Array的操作方法
2014/05/09 Javascript
简单方法判断JavaScript对象为null或者属性为空
2014/09/26 Javascript
浅谈JavaScript Array对象
2014/12/29 Javascript
JavaScript实现Flash炫光波动特效
2015/05/14 Javascript
JavaScript使用encodeURI()和decodeURI()获取字符串值的方法
2015/08/04 Javascript
基于javaScript的this指向总结
2017/07/22 Javascript
vue2.0 element-ui中el-select选择器无法显示选中的内容(解决方法)
2018/08/24 Javascript
深入浅析javascript函数中with
2018/10/28 Javascript
Vue 报错TypeError: this.$set is not a function 的解决方法
2018/12/17 Javascript
记录一次开发微信网页分享的步骤
2019/05/07 Javascript
element-ui中Table表格省市区合并单元格的方法实现
2019/08/07 Javascript
JS实现网页烟花动画效果
2020/03/10 Javascript
Vue使用Ref跨层级获取组件的步骤
2021/01/25 Vue.js
[02:36]DOTA2混沌骑士 英雄基础教程
2013/11/26 DOTA
Python类的多重继承问题深入分析
2014/11/09 Python
简单介绍Python中的RSS处理
2015/04/13 Python
使用Python编写类UNIX系统的命令行工具的教程
2015/04/15 Python
浅谈python对象数据的读写权限
2016/09/12 Python
Python获取本机所有网卡ip,掩码和广播地址实例代码
2018/01/22 Python
用Python实现将一张图片分成9宫格的示例
2019/07/05 Python
浅谈Python里面None True False之间的区别
2020/07/09 Python
详解Python yaml模块
2020/09/23 Python
澳洲Chemist Direct药房中文网:澳洲大型线上直邮药房
2019/11/04 全球购物
副总经理岗位职责
2014/03/16 职场文书
旷工检讨书1000字
2015/01/01 职场文书
2015年中个人总结范文
2015/03/10 职场文书
简历自我评价优缺点
2015/03/11 职场文书
2016年社区中秋节活动总结
2016/04/05 职场文书
vue3 自定义图片放大器效果的示例代码
2022/07/23 Vue.js