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 strtotime函数详解
Dec 18 PHP
PHP中文件读、写、删的操作(PHP中对文件和目录操作)
Mar 06 PHP
一个简洁实用的PHP缓存类完整实例
Jul 26 PHP
你应该知道PHP浮点数知识
May 13 PHP
PHP正则表达式之捕获组与非捕获组
Nov 06 PHP
分享PHP计算两个日期相差天数的代码
Dec 23 PHP
Zend Framework框架教程之Zend_Db_Table_Rowset用法实例分析
Mar 21 PHP
教你在header中隐藏php的版本信息
Aug 10 PHP
php实现压缩合并js的方法【附demo源码下载】
Sep 22 PHP
PHP实现对xml进行简单的增删改查(CRUD)操作示例
May 19 PHP
CentOS7编译安装php7.1的教程详解
Apr 18 PHP
PHP基于进程控制函数实现多线程
Dec 09 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实现的服务器一致性hash分布算法示例
2018/08/09 PHP
PHP字符串与数组处理函数用法小结
2020/01/07 PHP
Extjs4 关于Store的一些操作(加载/回调/添加)
2013/04/18 Javascript
js中的scroll和offset 使用比较的实例与分析
2013/09/29 Javascript
js拖动div 当鼠标移动时整个div也相应的移动
2013/11/21 Javascript
Bootstrap轮播插件简单使用方法介绍
2016/06/21 Javascript
JS变量中有var定义和无var定义的区别以及es6中let命令和const命令
2017/02/19 Javascript
vue实现百度搜索下拉提示功能实例
2017/06/14 Javascript
JavaScript 用fetch 实现异步下载文件功能
2017/07/21 Javascript
JS倒计时实例_天时分秒
2017/08/22 Javascript
深入理解Node.js中通用基础设计模式
2017/09/19 Javascript
vue-cli项目中怎么使用mock数据
2017/09/27 Javascript
JS设计模式之惰性模式(二)
2017/09/29 Javascript
node.js+express+mySQL+ejs+bootstrop实现网站登录注册功能
2018/01/12 Javascript
详解element-ui中form验证杂记
2019/03/04 Javascript
2019最新21个MySQL高频面试题介绍
2020/02/06 Javascript
vue中用 async/await 来处理异步操作
2020/07/18 Javascript
js实现随机点名
2021/01/19 Javascript
python的Template使用指南
2014/09/11 Python
python中lambda与def用法对比实例分析
2015/04/30 Python
浅谈python中的变量默认是什么类型
2016/09/11 Python
django+xadmin+djcelery实现后台管理定时任务
2018/08/14 Python
Python高级特性与几种函数的讲解
2019/03/08 Python
python 操作hive pyhs2方式
2019/12/21 Python
TensorFlow实现指数衰减学习率的方法
2020/02/05 Python
彻底搞懂 python 中文乱码问题(深入分析)
2020/02/28 Python
final, finally, finalize的区别
2012/03/01 面试题
县政府领导班子四风问题对照检查材料思想汇报
2014/09/26 职场文书
学习保证书怎么写
2015/02/26 职场文书
2015小学教育教学工作总结
2015/07/21 职场文书
小学英语教学随笔
2015/08/14 职场文书
2017寒假社会实践心得体会范文
2016/01/14 职场文书
2019年怎样写好导游词?
2019/07/02 职场文书
导游词之镜泊湖
2019/12/09 职场文书
Redis5之后版本的高可用集群搭建的实现
2021/04/27 Redis
Python机器学习算法之决策树算法的实现与优缺点
2021/05/13 Python