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 相关文章推荐
提问的智慧(2)
Oct 09 PHP
PHP+DBM的同学录程序(2)
Oct 09 PHP
php中关于codeigniter的xmlrpc的类在进行数据交换时的类型问题
Jul 03 PHP
深入php函数file_get_contents超时处理的方法详解
Jun 03 PHP
PHP将XML转数组过程详解
Nov 13 PHP
PHP+MySQL之Insert Into数据插入用法分析
Sep 27 PHP
PHP通过加锁实现并发情况下抢码功能
Aug 10 PHP
php格式化时间戳
Dec 17 PHP
PHP排序算法之简单选择排序(Simple Selection Sort)实例分析
Apr 20 PHP
laravel实现上传图片的两种方式小结
Oct 12 PHP
PHP 代码简洁之道(小结)
Oct 16 PHP
TP5框架实现上传多张图片的方法分析
Mar 29 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 服务器调试 Zend Debugger 的安装教程
2009/09/25 PHP
php 面向对象的一个例子
2011/04/12 PHP
php自动加载autoload机制示例分享
2014/02/20 PHP
WordPress迁移时一些常见问题的解决方法整理
2015/11/24 PHP
PHP实现打包下载文件的方法示例
2017/10/07 PHP
Laravel使用消息队列需要注意的一些问题
2017/12/13 PHP
PHP设计模式概论【概念、分类、原则等】
2020/05/01 PHP
JavaScript高级程序设计 阅读笔记(十二) js内置对象Math
2012/08/14 Javascript
使用javascript过滤html的字符串(注释标记法)
2013/07/08 Javascript
Internet Explorer 11 浏览器介绍:别叫我IE
2014/09/28 Javascript
javascript设计模式之对象工厂函数与构造函数详解
2015/07/30 Javascript
Node.js 应用跑得更快 10 个技巧
2016/04/03 Javascript
浅析使用BootStrap TreeView插件实现灵活配置快递模板
2016/11/28 Javascript
JavaScript计时器用法分析【setTimeout和clearTimeout】
2017/01/18 Javascript
vue中使用sessionStorage记住密码功能
2018/07/24 Javascript
微信小程序自定义底部导航带跳转功能
2018/11/27 Javascript
vue.js+ElementUI实现进度条提示密码强度效果
2020/01/18 Javascript
JS Html转义和反转义(html编码和解码)的实现与使用方法总结
2020/03/10 Javascript
Antd表格滚动 宽度自适应 不换行的实例
2020/10/27 Javascript
Vue中nprogress页面加载进度条的方法实现
2020/11/13 Javascript
jQuery-App输入框实现实时搜索
2020/11/19 jQuery
Python写的一个定时重跑获取数据库数据
2016/12/28 Python
python实现决策树C4.5算法详解(在ID3基础上改进)
2017/05/31 Python
pycharm 取消默认的右击运行unittest的方法
2018/11/29 Python
python读取文件名并改名字的实例
2019/01/07 Python
关于不懂Chromedriver如何配置环境变量问题解决方法
2019/06/12 Python
pyinstaller打包opencv和numpy程序运行错误解决
2019/08/16 Python
详解基于python的图像Gabor变换及特征提取
2020/10/26 Python
关于CSS Tooltips(鼠标经过时显示)的效果
2013/04/10 HTML / CSS
CSS3旋转——彩色扇子兼容firefox浏览器
2013/06/04 HTML / CSS
庆八一活动方案
2014/01/25 职场文书
我们的节日端午节活动方案
2014/03/02 职场文书
经典英文广告词
2014/03/18 职场文书
小学捐书活动总结
2014/07/05 职场文书
2014年党务公开工作总结
2014/12/09 职场文书
Python音乐爬虫完美绕过反爬
2021/08/30 Python