一、APP的通信格式之xml

xml:扩展标记语言,可以用来标记数据,定义数据类型,是一种允许用户对自己标记语言进行定义的源语言。XML格式统一,扩平台语言,非常适合数据传输和通信,业界公认的标准。

支持操作系统:windows、linux

支持语言:python、php、java

二、APP的通信格式之json

JSON是一种轻量级的数据交换语言,以文字为基础,且易于让人阅读,同时也方便了机器进行解析和生成。

JSON简单的说是javascript中的对象和数组,所以这两种结构就是对象和数组两种结构,通过这两种结构可以表示各种复杂的结构,其可以将Javascript对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松的传递这个字符串,或者在异步应用程序中将字符串从Web客户机传递给服务器端程序。

JSON采用完全独立于程序语言的文本格式。JSON是理想的数据交换语言。

三、APP的通信格式之区别

1、可读性方面:xml比较好

2、生成数据方面:json较优(一个函数即可)

3、传输速度方面:json胜出

四、APP接口的作用

1、获取数据

从数据或者缓存中获取数据,然后通过接口数据返回给客户端

2、提交数据

通过接口提交给服务器,然后服务器对数据进行入库处理,并返回执行结果。

五、APP开发之APP接口

1、json方式封装接口数据的方法

通信数据的标准格式:

code   状态码(200,400等)

message  提示信息(提示用户的操作成功与失败)

data   返回的数据

2、json方式封装:php生成JSON数据

方法:json_encode($value);

注意:该函数只能接受UTF-8编码的数据,如果传递其他格式的数据的话会返回NULL

六、使用json和xml封装数据,代码如下:

  1. <?php
  2. class Response{
  3. static public function datas($code,$message,$data,$type='json'){
  4. switch($type){
  5. case 'json':
  6. return self::json($code,$message,$data);
  7. break;
  8. case 'xml':
  9. return self::xml($code,$message,$data);
  10. break;
  11. case 'array':
  12. $arr = array(
  13. "code"=>$code,
  14. "message" =>$message,
  15. "data" =>$data,
  16. );
  17. var_dump($arr);
  18. break;
  19. default:
  20. break;
  21. }
  22. }
  23. //xml为了安全性在前面加static
  24. static public function xml($code,$message,$data){
  25. if(!is_numeric($code)){
  26. return false;
  27. }
  28. if($message && $data){
  29. $str = '<?xml version="1.0" encoding="UTF-8">
  30. <item>
  31. <code>'.$code.'</code>
  32. <message>'.$message.'</message>
  33. <data>';
  34. $str.=self::item($data);
  35. $str.='</data>
  36. </item>';
  37. return $str;
  38. }else{
  39. return false;
  40. }
  41. }
  42. static public function item($data){
  43. $str = "";
  44. //打印var_dump($data);
  45. foreach($data as $key =>$value){
  46. if(is_array($value)){
  47. $str .="<data$key>".self::item($value)."</data$key>\n";
  48. }else{
  49. $str .="<$key>{$value}</$key>\n";
  50. }
  51. }
  52. return $str;
  53. }
  54. //json
  55. static public function json($code,$message,$data){
  56. if(!is_numeric($code)){
  57. return false
  58. }
  59. if($message && $data){
  60. $arr = array(
  61. "code"=>$code,
  62. "message" =>$message,
  63. "data" =>$data,
  64. );
  65. return json_encode($arr);
  66. }else{
  67. return false;
  68. }
  69. }
  70. }
  71. $data = array(
  72. array("name"=>"张三","age"=>"10"),
  73. array("name"=>"李煜","age"=>"20"),
  74. array("name"=>"李涛","age"=>"18"),
  75. array("name"=>"马华","age"=>"20"),
  76. array("name"=>"王子涵","age"=>"20"),
  77. array("name"=>"李丽","age"=>"22"),
  78. );
  79. $type = isset($_GET['type'])?$_GET['type']:'json';
  80. echo Response::datas("200","成功",$data,$type)
  81. ?>

七、数据缓存到文件中,代码如下:

  1. <?php
  2. class Files{
  3. public $dir;
  4. public $ext = '.txt';
  5. public $path;
  6. public function __construct(){
  7. $this->dir=dirname(__FILE__).'/data/';
  8. }
  9. //缓存数据
  10. public function CacheData($data,$paths,$time,$filename){
  11. //设置缓存文件
  12. $this->path=$this->dir.$paths.$filename.$this->ext;
  13. if(!file_exists(dirname($this->path))){
  14. mkdir(dirname($this->path));
  15. }
  16. if($data){
  17. // 设置数据,不足10位用0补全
  18. $str = sprintf('010%d',$time).$data.time();
  19. //数据存在的话,对数据进行缓存
  20. file_put_contents($this->path,$str);
  21. }else{
  22. //判断文件是否存在
  23. if(!file_exists($this->path)){
  24. return false;
  25. }
  26. //如果数据为空,删除缓存
  27. if(is_null($data)){
  28. //删除文件
  29. unlink($this->path);
  30. }
  31. //定时更新
  32. $datas=file_get_contents($this->path);
  33. $cacheTime=substr($datas,0,10);
  34. $oldTime =substr($datas,-10);
  35. if($oldTime+$cacheTime >time()){
  36. return substr($datas,10,-10);
  37. }else{
  38. return false;
  39. }
  40. }
  41. }
  42. }
  43. include "Response.php";
  44. header('content-type:text/html;charset=utf-8');
  45. $model=new Files();
  46. //删除缓存
  47. $model->CacheData(null,'user','','file1');
  48. //$model->CacheData('数据',缓存到哪个文件中,缓存时间,'文件名file1')
  49. //把数据缓存到data文件下的user文件夹的stem.txt中
  50. //读取缓存
  51. if($data=$model->CacheData('123','/user/',100,'file1')){
  52. $data=json_decode($data,true);
  53. var_dump($data);
  54. echo "从文件获取数据";
  55. }else{
  56. //设置缓存
  57. echo "设置数据";
  58. $data = array(
  59. array("name"=>"张三","age"=>"10"),
  60. array("name"=>"李煜","age"=>"20"),
  61. array("name"=>"李涛","age"=>"18"),
  62. array("name"=>"马华","age"=>"20"),
  63. array("name"=>"王子涵","age"=>"20"),
  64. array("name"=>"李丽","age"=>"22"),
  65. );
  66. var_dump($data);
  67. $str= Response::datas("200","成功",$data);
  68. $model->CacheData($str,'/user/',100,'file1');
  69. }
  70. ?>

json和xml封装数据、数据缓存到文件中的更多相关文章

  1. jQuery form插件的使用--处理server返回的JSON, XML,HTML数据

    详细代码: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> & ...

  2. Python3操作MySQL,查询数据并保存到文件中

    我们在测试过程中,可能需要到数据库中拉去一些数据,为从测试准备.比如最近在做接口性能测试的时候,就需要很多数据来支撑,所以就需要的数据库去查询数据,下面就是python3 查询 mysql 并且保存到 ...

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

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

  4. iOS-数据持久化基础-JSON与XML数据解析

    解析的基本概念 所谓“解析”:从事先规定好的格式串中提取数据 解析的前提:提前约定好格式.数据提供方按照格式提供数据.数据获取方按照格式获取数据 iOS开发常见的解析:XML解析.JSON解析 一.X ...

  5. 玩转iOS开发 - JSON 和 Xml 数据解析

    前言 Json 和xml是网络开发中经常使用的数据格式,JSON轻量级.xml相对较复杂.所以如今用JSON的比例很大.基本上从server获取的返回数据都是JSON格式的,作为iOS开发人员,解析J ...

  6. 数据交换格式Json与XML

    什么是数据交换格式: 主流的有Json.XML.HTML. 数据交换格式的应用场景: 移动端(安卓,IOS)通讯方式采用http协议+Json格式的restful风格. 很多互联网公司都是用Http协 ...

  7. python数据处理(一)之供机器读取的数据 csv,json,xml

    代码与资料 https://github.com/jackiekazil/data-wrangling 1 csv 1.1导入csv数据 1.2将代码保存到文件中并在命令行中运行 2.json 2 导 ...

  8. PHP如何自动识别第三方Restful API的内容,自动渲染成 json、xml、html、serialize、csv、php等数据

    如题,PHP如何自动识别第三方Restful API的内容,自动渲染成 json.xml.html.serialize.csv.php等数据? 其实这也不难,因为Rest API也是基于http协议的 ...

  9. php生成json或者xml数据

    , ,'数据返回成功',$arr);echo $xml;?>

随机推荐

  1. 以太坊RLP用法-go-ethereum学习

    RLP (递归长度前缀)提供了一种适用于任意二进制数据数组的编码,RLP已经成为以太坊中对对象进行序列化的主要编码方式.RLP的唯一目标就是解决结构体的编码问题:对原子数据类型(比如,字符串,整数型, ...

  2. 【小练习02】CSS--网易产品

    要求用css和HTML实现下图效果: 代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8& ...

  3. Xamarin开发笔记—百度在线语音合成

    语音合成:也被称为文本转换技术(TTS),它是将计算机自己产生的.或外部输入的文字信息转变为可以听得懂的.流利的口语输出的技术. 技术选型:语音合成初步选择有两个,一是讯飞.二是百度. 因为使用的是X ...

  4. win8安装sql2008及设置登陆名问题

    1. .net3.5安装        使用win8系统自带的升级功能无法成功安装.其实Windows8安装文件中已经集了.Net3.5,       (1)此时只需要使用虚拟光驱加载Windows8 ...

  5. Bottle源码阅读笔记(二):路由

    前言 程序收到请求后,会根据URL来寻找相应的视图函数,随后由其生成页面发送回给客户端.其中,不同的URL对应着不同的视图函数,这就存在一个映射关系.而处理这个映射关系的功能就叫做路由.路由的实现分为 ...

  6. Chapter 3:Speech Production and Perception

    作者:桂. 时间:2017-05-24  09:09:36 主要是<Speech enhancement: theory and practice>的读书笔记,全部内容可以点击这里. 一. ...

  7. springmvc 之 SpringMVC视图解析器

    当我们对SpringMVC控制的资源发起请求时,这些请求都会被SpringMVC的DispatcherServlet处理,接着Spring会分析看哪一个HandlerMapping定义的所有请求映射中 ...

  8. 解决ionic在Android和iOS的一些样式上的冲突

    //设置默认返回按钮的文字 $ionicConfigProvider.backButton.previousTitleText(false).text('返回'); // 设置全局 $http 超时 ...

  9. Akka(9): 分布式运算:Remoting-远程构建式

    上篇我们讨论了Akka-Remoting.我们说Akka-Remoting是一种点对点的通讯方式,能使两个不同JVM上Akka-ActorSystem上的两个Actor之间可以相互沟通.Akka-Re ...

  10. 在Cenos系统安装Python3.5版本,使P2和P3共存

    首先Cenos安装好后,系统自带python2.6版本 输入>>>exit()     退出 使用迅雷下载python3.5 链接:https://www.python.org/ft ...