一、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封装数据,代码如下:

 <?php
class Response{
static public function datas($code,$message,$data,$type='json'){
switch($type){
case 'json':
return self::json($code,$message,$data);
break;
case 'xml':
return self::xml($code,$message,$data);
break;
case 'array':
$arr = array(
"code"=>$code,
"message" =>$message,
"data" =>$data,
);
var_dump($arr);
break;
default:
break;
}
}
//xml为了安全性在前面加static
static public function xml($code,$message,$data){
if(!is_numeric($code)){
return false;
}
if($message && $data){
$str = '<?xml version="1.0" encoding="UTF-8">
<item>
<code>'.$code.'</code>
<message>'.$message.'</message>
<data>';
$str.=self::item($data);
$str.='</data>
</item>';
return $str;
}else{
return false;
}
}
static public function item($data){
$str = "";
//打印var_dump($data);
foreach($data as $key =>$value){
if(is_array($value)){
$str .="<data$key>".self::item($value)."</data$key>\n";
}else{
$str .="<$key>{$value}</$key>\n";
}
}
return $str;
}
//json
static public function json($code,$message,$data){
if(!is_numeric($code)){
return false
}
if($message && $data){
$arr = array(
"code"=>$code,
"message" =>$message,
"data" =>$data,
);
return json_encode($arr);
}else{
return false;
}
}
}
$data = array(
array("name"=>"张三","age"=>"10"),
array("name"=>"李煜","age"=>"20"),
array("name"=>"李涛","age"=>"18"),
array("name"=>"马华","age"=>"20"),
array("name"=>"王子涵","age"=>"20"),
array("name"=>"李丽","age"=>"22"),
);
$type = isset($_GET['type'])?$_GET['type']:'json';
echo Response::datas("200","成功",$data,$type)
?>

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

 <?php
class Files{
public $dir;
public $ext = '.txt';
public $path;
public function __construct(){
$this->dir=dirname(__FILE__).'/data/';
}
//缓存数据
public function CacheData($data,$paths,$time,$filename){
//设置缓存文件
$this->path=$this->dir.$paths.$filename.$this->ext;
if(!file_exists(dirname($this->path))){
mkdir(dirname($this->path));
}
if($data){
// 设置数据,不足10位用0补全
$str = sprintf('010%d',$time).$data.time();
//数据存在的话,对数据进行缓存
file_put_contents($this->path,$str);
}else{
//判断文件是否存在
if(!file_exists($this->path)){
return false;
}
//如果数据为空,删除缓存
if(is_null($data)){
//删除文件
unlink($this->path);
}
//定时更新
$datas=file_get_contents($this->path);
$cacheTime=substr($datas,0,10);
$oldTime =substr($datas,-10);
if($oldTime+$cacheTime >time()){
return substr($datas,10,-10);
}else{
return false;
}
}
}
}
include "Response.php";
header('content-type:text/html;charset=utf-8');
$model=new Files();
//删除缓存
$model->CacheData(null,'user','','file1');
//$model->CacheData('数据',缓存到哪个文件中,缓存时间,'文件名file1')
//把数据缓存到data文件下的user文件夹的stem.txt中
//读取缓存
if($data=$model->CacheData('123','/user/',100,'file1')){
$data=json_decode($data,true);
var_dump($data);
echo "从文件获取数据";
}else{
//设置缓存
echo "设置数据";
$data = array(
array("name"=>"张三","age"=>"10"),
array("name"=>"李煜","age"=>"20"),
array("name"=>"李涛","age"=>"18"),
array("name"=>"马华","age"=>"20"),
array("name"=>"王子涵","age"=>"20"),
array("name"=>"李丽","age"=>"22"),
);
var_dump($data);
$str= Response::datas("200","成功",$data);
$model->CacheData($str,'/user/',100,'file1');
}
?>

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. UX2内核浏览加速技术纲要

    UX2内核是本人负责主要开发的浏览服务项目,其主要目的是为开发者提供一个简单好用.轻便的网络浏览服务.UX2内核的安卓端是基于WebView进行深度优化的,同时欢迎大家使用这个内核用于app页面或浏览 ...

  2. Nagios配置安装详解

    nagios.html :first-child{margin-top:0!important}img.plugin{box-shadow:0 1px 3px rgba(0,0,0,.1);borde ...

  3. 【PHP】最详细PHP从入门到精通(二)——PHP中的函数

     PHP从入门到精通 之PHP中的函数 各位开发者朋友大家好,自上次更新PHP的相关知识,得到了大家的广泛支持.PHP的火爆程度不言而喻,函数作为PHP中极为重要的部分,应诸位的支持,博主继续跟进更新 ...

  4. css如何让div和页面等高?

    我们都知道,只要是block状态的标签,宽度和父级等宽,或者设置宽度100%也可以等宽,但设置高度100%是不管用的,那么如何让标签和页面等高呢,除了用js去动态计算设置高度值,用css也可以 只要将 ...

  5. asp.net MVC 网站图片防盗链的几种方法

    目录 1. 通过 URL Rewrite Module 组件 2. 通过 nginx 图片防盗链 3.自定义 HttpHandler 处理 4. 通过 MVC 自定义路由规则防盗链 5. 通过 MVC ...

  6. openjdk7之编译和debug

    大家也可以看我的博客: openjdk7之编译和debug,这里格式更好. 为了更好的学习JDK.HotSpot等源码,需要能debug JDK.HotSpot等源码.本文主要讲述,怎么编译open ...

  7. B树和B+树的总结

    B树 为什么要B树 磁盘中有两个机械运动的部分,分别是盘片旋转和磁臂移动.盘片旋转就是我们市面上所提到的多少转每分钟,而磁盘移动则是在盘片旋转到指定位置以后,移动磁臂后开始进行数据的读写.那么这就存在 ...

  8. CSS中的尺寸单位

    绝对单位 px: Pixel 像素 pt: Points 磅 pc: Picas 派卡 in: Inches 英寸 mm: Millimeter 毫米 cm: Centimeter 厘米 q: Qua ...

  9. Xamarin开发笔记—设备类&第三方弹窗的使用和注意事项

    一.设备类是Xamarin重要开发组成部分,下面介绍一下设备类的主要用法: //唤醒打电话 Device.OpenUri(new Uri("tel:180xxxxxxxx")); ...

  10. win7开启telnet客户端