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 array_map()数组函数使用说明
Jul 12 PHP
php4与php5的区别小结(配置异同)
Dec 20 PHP
PHP文件去掉PHP注释空格的函数分析(PHP代码压缩)
Jul 02 PHP
PHP实现的英文名字全拼随机排号脚本
Jul 04 PHP
PHP中读取文件的8种方法和代码实例
Aug 05 PHP
php取得字符串首字母的方法
Mar 25 PHP
Smarty中的注释和截断功能介绍
Apr 09 PHP
WordPress中用于获取及自定义头像图片的PHP脚本详解
Dec 17 PHP
php脚本运行时的超时机制详解
Feb 17 PHP
Zend Framework+smarty用法实例详解
Mar 19 PHP
Yii2中设置与获取别名的函数(setAlias和getAlias)用法分析
Jul 25 PHP
php设计模式之中介者模式分析【星际争霸游戏案例】
Mar 23 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中关于php.ini参数优化详解
2020/02/28 PHP
在Z-Blog中运行代码[html][/html](纯JS版)
2007/03/25 Javascript
JSON语法五大要素图文介绍
2012/12/04 Javascript
javascript 中that的含义示例介绍
2014/05/14 Javascript
分享9点个人认为比较重要的javascript 编程技巧
2015/04/27 Javascript
jQuery实现限制textarea文本框输入字符数量的方法
2015/05/28 Javascript
解决JavaScript数字精度丢失问题的方法
2015/12/03 Javascript
JS实现字符串转日期并比较大小实例分析
2015/12/09 Javascript
jQuery遍历DOM元素与节点方法详解
2016/04/14 Javascript
JS组件Bootstrap Table布局详解
2016/05/27 Javascript
JS实现倒计时(天数、时、分、秒)
2016/11/16 Javascript
react native仿微信PopupWindow效果的实例代码
2017/08/07 Javascript
js通过Date对象实现倒计时动画效果
2017/10/27 Javascript
一个Vue视频媒体多段裁剪组件的实现示例
2018/08/09 Javascript
JS 实现微信扫一扫功能
2018/09/14 Javascript
vue实现弹框遮罩点击其他区域弹框关闭及v-if与v-show的区别介绍
2018/09/29 Javascript
常见的浏览器存储方式(cookie、localStorage、sessionStorage)
2019/05/07 Javascript
vue.js中ref和$refs的使用及示例讲解
2019/08/14 Javascript
JS函数参数的传递与同名参数实例分析
2020/03/16 Javascript
深入理解javascript中的this
2021/02/08 Javascript
[01:51]开启你的城市传奇 完美世界城市挑战赛开始报名
2018/10/09 DOTA
python flask 多对多表查询功能
2017/06/25 Python
Python读取和处理文件后缀为.sqlite的数据文件(实例讲解)
2017/06/27 Python
Python进阶之@property动态属性的实现
2019/04/01 Python
python中通过selenium简单操作及元素定位知识点总结
2019/09/10 Python
解决python-docx打包之后找不到default.docx的问题
2020/02/13 Python
selenium学习教程之定位以及切换frame(iframe)
2021/01/04 Python
关于HTML5的安全问题开发人员需要牢记的
2012/06/21 HTML / CSS
全球领先美式家具品牌:Ashley爱室丽家居
2017/08/07 全球购物
美国在线家居装饰店:Belle&June
2018/10/24 全球购物
物理系毕业生自荐书范文
2014/02/22 职场文书
优秀班组长事迹
2014/05/31 职场文书
2014年前台文员工作总结
2014/12/08 职场文书
幼儿园大班教师个人工作总结
2015/02/05 职场文书
Python爬虫数据的分类及json数据使用小结
2021/03/29 Python
MySQL 语句执行顺序举例解析
2022/06/05 MySQL