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环境搭建最新方法
Sep 05 PHP
域名查询代码公布
Oct 09 PHP
PHP4引用文件语句的对比
Oct 09 PHP
php生成文件
Jan 15 PHP
php下保存远程图片到本地的办法
Aug 08 PHP
php多文件上传实现代码
Feb 20 PHP
php中spl_autoload详解
Oct 17 PHP
Zend Framework教程之分发器Zend_Controller_Dispatcher用法详解
Mar 07 PHP
PHP微信开发用Cache 解决数据缓存
Jul 11 PHP
form表单传递数组数据、php脚本接收的实例
Feb 09 PHP
CodeIgniter框架基本增删改查操作示例
Mar 23 PHP
php JWT在web端中的使用方法教程
Sep 06 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版(5)
2006/10/09 PHP
用PHP制作静态网站的模板框架(一)
2006/10/09 PHP
用phpmyadmin更改mysql5.0登录密码
2008/03/25 PHP
php截取html字符串及自动补全html标签的方法
2015/01/15 PHP
支付宝支付开发――当面付条码支付和扫码支付实例
2016/11/04 PHP
php使用 readfile() 函数设置文件大小大小的方法
2017/08/11 PHP
js之WEB开发调试利器:Firebug 下载
2007/01/13 Javascript
javaScript array(数组)使用字符串作为数组下标的方法
2013/11/19 Javascript
原生JS绑定滑轮滚动事件兼容常见浏览器
2014/06/30 Javascript
Jquery 效果使用详解
2015/11/23 Javascript
JavaScript、tab切换完整版(自动切换、鼠标移入停止、移开运行)
2016/01/05 Javascript
jQuery插件easyUI实现通过JS显示Dialog的方法
2016/09/16 Javascript
利用Node.js+Koa框架实现前后端交互的方法
2017/02/27 Javascript
vue axios登录请求拦截器
2018/04/02 Javascript
js+html5实现手机九宫格密码解锁功能
2018/07/30 Javascript
vue中引入第三方字体文件的方法示例
2018/12/17 Javascript
vue项目中使用AES实现密码加密解密(ECB和CBC两种模式)
2019/08/12 Javascript
Layui 带多选框表格监听事件以及按钮自动点击写法实例
2019/09/02 Javascript
uniapp与webview之间的相互传值的实现
2020/06/29 Javascript
Vue 实现监听窗口关闭事件,并在窗口关闭前发送请求
2020/09/01 Javascript
[08:53]DOTA2每周TOP10 精彩击杀集锦vol.9
2014/06/26 DOTA
python正则表达式re模块详解
2014/06/25 Python
Python3读取zip文件信息的方法
2015/05/22 Python
python操作oracle的完整教程分享
2018/01/30 Python
python在文本开头插入一行的实例
2018/05/02 Python
Django添加favicon.ico图标的示例代码
2018/08/07 Python
Python wxpython模块响应鼠标拖动事件操作示例
2018/08/23 Python
浅谈python常用程序算法
2019/03/22 Python
pandas基于时间序列的固定时间间隔求均值的方法
2019/07/04 Python
python实现名片管理器的示例代码
2019/12/17 Python
基于python求两个列表的并集.交集.差集
2020/02/10 Python
virtualenv介绍及简明教程
2020/06/23 Python
教师党员思想汇报
2014/01/06 职场文书
关于践行三严三实的心得体会
2016/01/05 职场文书
2019年大学生职业生涯规划书
2019/03/25 职场文书
MySQL系列之七 MySQL存储引擎
2021/07/02 MySQL