json和xml封装数据、数据缓存到文件中

一、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 ?>
时间: 2024-08-25 14:39:35

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

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

详细代码: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>jQuery form插件的使用--处理server返回的JSON, XML,HTML数据</title> <meta http-equiv="Content-Type" content="text/html;

php解析、封装JSON与XML

比如阿里.腾讯.百度在提供第三方服务的时候都是通过JSON或XML进行传递数据.在工作的时候和第三方公司对接的时候也是这两种数据格式,所以在这总结一下这两种格式的封装和解析. JSON的封装和解析 封装JSON数据 <?php $items = array( array('id'=>1,'name'=>"衣服",'parId'=>0), array('id'=>2,'name'=>"书籍",'parId'=>0), arra

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

解析的基本概念 所谓“解析”:从事先规定好的格式串中提取数据 解析的前提:提前约定好格式.数据提供方按照格式提供数据.数据获取方按照格式获取数据 iOS开发常见的解析:XML解析.JSON解析 一.XML数据结构 解析的基本概念 所谓“解析”:从事先规定好的格式串中提取数据 解析的前提:提前约定好格式.数据提供方按照格式提供数据.数据获取方按照格式获取数据 iOS开发常见的解析:XML解析.JSON解析 XML数据结构 XML解析SAX?方式解析从上往下,?一点?一点读取性能好苹果推荐使?用DO

iOS网络编程开发—JSON和XML数据解析

iOS网络编程开发—JSON解析 一.什么是JSON JSON是一种轻量级的数据格式,一般用于数据交互 服务器返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除外) JSON的格式很像OC中的字典和数组 {"name" : "jack", "age" : 10} {"names" : ["jack", "rose", "jim"]} 标准JSON格式的

iOS开发——网络Swift篇&amp;JSON与XML数据解析

JSON与XML数据解析 JSON数据解析(内置NSJSONSerialization与第三方JSONKit) 一,使用自带的NSJSONSerialization 苹果从IOS5.0后推出了SDK自带的JSON解决方案NSJSONSerialization,这是一个非常好用的JSON生成和解析工具,效率也比其他第三方开源项目高. NSJSONSerialization能将JSON转换成Foundation对象,也能将Foundation对象转换成JSON,但转换成JSON的对象必须具有如下属性

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

如题,PHP如何自动识别第三方Restful API的内容,自动渲染成 json.xml.html.serialize.csv.php等数据? 其实这也不难,因为Rest API也是基于http协议的,只要我们按照协议走,就能做到自动化识别 API 的内容,方法如下: 1.API服务端要返回明确的 http Content-Type头信息,如 Content-Type: application/json; charset=utf-8 Content-Type: application/xml;

NSURLSession(Get &amp; Post,JSON、XML数据解析,文件上传下载)

NSURLSession(Get & Post,JSON.XML数据解析,文件上传下载) 一.NSURLSession概述 NSURLSession是iOS7中新的网络接口,支持后台网络操作,除非用户强行关闭. NSURLSession使用步骤: 1. 新建NSURLSessionConfiguration,用于NSURLSession的配置 2. 新建NSURLSession 3. 新建NSURLSessionTask对象 4. 执行task 其中NSURLSessionConfigurati

零基础iOS之Json及XML数据解析2

零基础iOS之Json及XML数据解析http://www.cnblogs.com/dingjianjaja/articles/4798604.html

WebService 返回json格式和返回xml格式的数据

返回json格式 //using System.Web.Script.Services; [WebMethod] [ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)] public void HelloWorld() { Context.Response.Clear(); Context.Response.ContentType = "application/json"; Model.User.U