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 相关文章推荐
dedecms 制作模板中使用的全局标记图文教程
Mar 11 PHP
php后台多用户权限组思路与实现程序代码分享
Feb 13 PHP
php判断页面是否是微信打开的示例(微信打开网页)
Apr 25 PHP
php在数据库抽象层简单使用PDO的方法
Nov 03 PHP
盘点PHP和ASP.NET的10大对比!
Dec 24 PHP
详解在PHP的Yii框架中使用行为Behaviors的方法
Mar 18 PHP
smarty循环嵌套用法示例分析
Jul 19 PHP
PHP使用preg_split和explode分割textarea存放内容的方法分析
Jul 03 PHP
php+ajax实现异步上传文件或图片功能
Jul 18 PHP
PHP基于pdo的数据库操作类【可支持mysql、sqlserver及oracle】
May 21 PHP
PHP实现统计代码行数小工具
Sep 19 PHP
PHP使用PDO 连接与连接管理操作实例分析
Apr 21 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” 彩蛋进行敏感信息获取
2013/08/07 PHP
开发跨浏览器javascript常见注意事项
2009/01/01 Javascript
JavaScript DOM学习第四章 getElementByTagNames
2010/02/19 Javascript
httpclient模拟登陆具体实现(使用js设置cookie)
2013/12/11 Javascript
js的image onload事件使用遇到的问题
2014/07/15 Javascript
javascript实现密码验证
2015/11/10 Javascript
jQuery简单实现input文本框内灰色提示文本效果的方法
2015/12/02 Javascript
基于Echarts 3.19 制作常用的图形(非静态)
2016/05/19 Javascript
手机软键盘弹出时影响布局的解决方法
2016/12/15 Javascript
Angular的事件和表单详解
2016/12/26 Javascript
nodejs个人博客开发第七步 后台登陆
2017/04/12 NodeJs
详解AngularJS ui-sref的简单使用
2017/04/24 Javascript
js实现敏感词过滤算法及实现逻辑
2018/07/24 Javascript
在vue-cli的组件模板里使用font-awesome的两种方法
2018/09/28 Javascript
谈谈React中的Render Props模式
2018/12/06 Javascript
Vue + Element UI图片上传控件使用详解
2019/08/20 Javascript
python数据清洗系列之字符串处理详解
2017/02/12 Python
详解Python3.6的py文件打包生成exe
2018/07/13 Python
使用python实现名片管理系统
2020/06/18 Python
深入了解Python enumerate和zip
2020/07/16 Python
Superdry瑞典官网:英国日本街头风品牌
2017/05/17 全球购物
北美个性化礼品商店:Things Remembered
2018/06/12 全球购物
法国发饰品牌:Alexandre De Paris
2018/12/04 全球购物
Erwin Müller穆勒家居瑞士官网:您整个家庭的邮购公司
2019/12/28 全球购物
社会实践自我鉴定
2013/11/07 职场文书
售后服务科岗位职责范文
2013/11/13 职场文书
前台接待岗位职责
2013/12/03 职场文书
入党介绍人评语
2014/05/06 职场文书
一份文言文检讨书
2014/09/13 职场文书
七一慰问简报
2015/07/20 职场文书
python函数指定默认值的实例讲解
2021/03/29 Python
javascript拖曳互换div的位置实现示例
2021/06/28 Javascript
opencv检测动态物体的实现
2021/07/21 Python
MySQL实战记录之如何快速定位慢SQL
2022/03/23 MySQL
服务器间如何实现文件共享
2022/05/20 Servers
Nginx配置使用详解
2022/07/07 Servers