比如阿里、腾讯、百度在提供第三方服务的时候都是通过JSON或XML进行传递数据。在工作的时候和第三方公司对接的时候也是这两种数据格式,所以在这总结一下这两种格式的封装和解析。

JSON的封装和解析

封装JSON数据

<?php$items = array(array('id'=>1,'name'=>"衣服",'parId'=>0),array('id'=>2,'name'=>"书籍",'parId'=>0),array('id'=>3,'name'=>"T恤",'parId'=>1),array('id'=>4,'name'=>"裤子",'parId'=>1),array('id'=>5,'name'=>"鞋子",'parId'=>1),array('id'=>6,'name'=>"皮鞋",'parId'=>5),array('id'=>7,'name'=>"运动鞋",'parId'=>5),array('id'=>8,'name'=>"耐克",'parId'=>7),array('id'=>9,'name'=>"耐克",'parId'=>3),array('id'=>10,'name'=>"鸿星尔克",'parId'=>7),array('id'=>11,'name'=>"小说",'parId'=>2),array('id'=>12,'name'=>"科幻小说",'parId'=>11),array('id'=>13,'name'=>"古典名著",'parId'=>11),array('id'=>14,'name'=>"文学",'parId'=>2),array('id'=>15,'name'=>"四书五经",'parId'=>14)
);$message = json_encode($items,JSON_UNESCAPED_UNICODE);echo $message;

效果:

描述:第二参数是将中文不转为UNICODE的编码(JSON_UNESCAPED_UNICODE),默认转换成UNICODE的编码;

解析JSON数据

<?php$str = '[{"id":1,"name":"衣服","parId":0},{"id":2,"name":"书籍","parId":0},{"id":3,"name":"T恤","parId":1},{"id":4,"name":"裤子","parId":1},{"id":5,"name":"鞋子","parId":1},{"id":6,"name":"皮鞋","parId":5},{"id":7,"name":"运动鞋","parId":5},{"id":8,"name":"耐克","parId":7},{"id":9,"name":"耐克","parId":3},{"id":10,"name":"鸿星尔克","parId":7},{"id":11,"name":"小说","parId":2},{"id":12,"name":"科幻小说","parId":11},{"id":13,"name":"古典名著","parId":11},{"id":14,"name":"文学","parId":2},{"id":15,"name":"四书五经","parId":14}]';$res = json_decode($str, true);var_dump($res);

效果:

描述:第二个参数是将数据转换为数组的格式(true),默认是json对象的格式

XML的封装和解析

<?php
/*** XML 工具类,用于构建与解析 XML.*/
class XmlUtils
{/*** XML 转换为数组.* @param string $xml XML string* @return array*/public static function parse($xml){$data = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA | LIBXML_NOBLANKS);if (is_object($data) && get_class($data) === 'SimpleXMLElement') {$data = self::arrarval($data);}return $data;}/*** XML编码* @param mixed  $data 数据* @param string $root 根节点名* @param string $item 数字索引的子节点名* @param string $attr 根节点属性* @param string $id  数字索引子节点key转换的属性名* @return string*/public static function build($data, $root = 'xml', $item = 'item', $attr = '', $id = 'id'){if (is_array($attr)) {$_attr = array();foreach ($attr as $key => $value) {$_attr[] = "{$key}=\"{$value}\"";}$attr = implode(' ', $_attr);}$attr = trim($attr);$attr = empty($attr) ? '' : "{$attr}";$xml = "<{$root} {$attr}>";$xml .= self::data2Xml($data, $item, $id);$xml .= "</{$root}>";return $xml;}/*** 生成.* @param string $string 内容* @return string*/public static function cdata($string){return sprintf('%s', $string);}/*** 把对象转换成数组.* @param string $data 数据* @return array*/private static function arrarval($data){if (is_object($data) && get_class($data) === 'SimpleXMLElement') {$data = (array)$data;}if (is_array($data)) {foreach ($data as $index => $value) {$data[$index] = self::arrarval($value);}}return $data;}/*** 转换数组为xml.* @param array  $data 数组* @param string $item item的属性名* @param string $id  id的属性名* @return string*/private static function data2Xml($data, $item = 'item', $id = 'id'){$xml = $attr = '';foreach ($data as $key => $val){if (is_numeric($key)){$id&&$attr = "{$id}=\"{$key}\"";$key = $item;}$xml .= "<{$key} {$attr}>";if ((is_array($val) || is_object($val))) {$xml .= self::data2Xml((array)$val, $item, $id);} else {$xml .= is_numeric($val) ? $val : self::cdata($val);}$xml .= "</{$key}>";}return $xml;}}

  

转载于:https://www.cnblogs.com/meichao/p/9356028.html

php解析、封装JSON与XML相关推荐

  1. XML解析、JSON解析入门

    引言 NOKIA 有句著名的广告语:"科技以人为本".任何技术都是为了满足人的生产生活需要而产生的.具体到小小的一个手机,里面蕴含的技术也是浩如烟海,是几千年来人类科技的结晶,单个 ...

  2. UI一揽子计划 15 (XML的解析方式 (SAX解析/ DOM解析) 、JSON 解析)

    一. XML的SAX解析 1).SAX解析   1. 遵守协议      @interfaceRootViewController ()<NSXMLParserDelegate> 2. 声 ...

  3. 在.NET2.0中解析Json和Xml

    在.NET2.0中解析Json和Xml 在.NET解析json有很多方法,这里介绍最简单也用的最多的一种. 一.添加引用 解析Json,先下载开源控件 Newtonsoft.Json.dll 下载地址 ...

  4. ajax请求json和xml数据及对json和xml格式数据的解析

    ajax请求json和xml数据及对json和xml格式数据的解析 一.ajax请求json数据并解析 ajax的写法: json数据解析: 请求json经常出现的跨域报错: 二.ajax请求xml数 ...

  5. Java JSON、XML文件/字符串与Bean对象互转解析

    前言      在做web或者其他项目中,JSON与XML格式的数据是大家经常会碰见的2种.在与各种平台做数据对接的时候,JSON与XML格式也是基本的数据传递格式,本文主要简单的介绍JSON/XML ...

  6. php如何返回数据请求数据格式化,PHP以json或xml数据格式返回请求数据的封装代码...

    现在主流的数据格式无非就是json和xml,下面我们来看看如何用php来封装一个返回这两种格式数据的类,下面青岛星网跟大家一起分享. 1.以json格式返回数据 json格式返回数据比较简单,直接将我 ...

  7. 自己实现JSON、XML的解析 没那么难

    本文的目的,不是针对现有的可用于生产环境的JSON.XML解析器源码进行剖析,而是介绍文本扫描的基础方法next(char),并以此为核心武器,根据目标语言的词法和语法特点,一步步地组织出条例清晰.易 ...

  8. 解析json数据_Retrofit同时解析JSON和XML数据格式

    前言 Android开发中,我们会经常遇到前端需要解析两种数据格式(json和xml),比如自己服务器返回的是json格式的数据,我们做微信登录的时候,微信返回的格式又是xml格式的.我们可以通过自己 ...

  9. iOS - - JSON 和 XML解析

    JSON 和 XML 一.JSON 1.什么是JSON JSON是一种轻量级的数据格式,一般用于数据交互 服务器返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除外) 2.JSON的格 ...

最新文章

  1. bamboo php,建立数据模型 — asbamboo php framework 文档
  2. ubuntu下启动和关闭tomcat的简单方法
  3. 电气论文实现: 考虑储能和可再生能源误差的售电公司购售电策略( 有代码数据)
  4. viewpager+fragment学习笔记
  5. 2021技术人新展望
  6. sqlplus怎样将名次显示在表的后面_数据透视表-01 3种分析方法比拼,助你步入透视表的知识宝殿...
  7. 生成器案例,#采集日志
  8. html5 上海,【上海校区】HTML5新特性
  9. 《Solution-Centric Organization》解决方案导向型组织 节选 IV
  10. oracle有几种类型表空间,oracle 数据创建时如何指定表空间类型
  11. codevs1409 拦截导弹2
  12. php mysql delimiter,MySql delimiter的作用是什么_MySQL
  13. 2.11 数值分析: 事后误差估计和迭代改善
  14. 30m土地利用数据集获取大全/植被类型分布/NDVI数据/NPP数据/径流量数据/降雨量气温气象数据/蒸散量数据/太阳辐射数据
  15. ROS学习(9)自定义移动机器人模型Gazebo仿真
  16. 使用rmats进行可变剪切的分析
  17. android获取进程内存使用信息、一键加速(内存清理)与进程重要级别解析
  18. 关于tv app的一些想法
  19. 防雷接地国家规范标准介绍与施工技术要点
  20. 计算机考研多少是高分,考研多少分算高分 总分500考380难吗

热门文章

  1. arduino控制点阵屏与蜂鸣器_还在为遥控项目发愁?Arduino遥控套装解决你的所有问题(下)...
  2. Python入门--获取字典视图的三个方法#keys()-->获取字典中所有key#values()-->获取字典中的所有value#items()-->获取字典中所有key-value对
  3. echart高级使用_echarts高级入坑
  4. 2019蓝桥杯B组:完全二叉树权值
  5. RayMarching2:给球加上光照
  6. torch.ones,normal,max
  7. C++ STL 程序员必须会之学会删除容器中的元素 带详细注释实例版本
  8. 吴恩达神经网络和深度学习-学习笔记-43-Bounding box 预测 + YOLO算法
  9. python基础系列教程——Python的安装与测试:python解释器、PyDev编辑器、pycharm编译器
  10. js中WINDOW对象中的location成员对象