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为了安全性在前面加static24         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         //json55         static public function json($code,$message,$data){56             if(!is_numeric($code)){57                 return false58             }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 ?>















本文转自xsster51CTO博客,原文链接:http://blog.51cto.com/12945177/1948514 ,如需转载请自行联系原作者





相关文章
|
1天前
|
JSON 前端开发 搜索推荐
关于商品详情 API 接口 JSON 格式返回数据解析的示例
本文介绍商品详情API接口返回的JSON数据解析。最外层为`product`对象,包含商品基本信息(如id、name、price)、分类信息(category)、图片(images)、属性(attributes)、用户评价(reviews)、库存(stock)和卖家信息(seller)。每个字段详细描述了商品的不同方面,帮助开发者准确提取和展示数据。具体结构和字段含义需结合实际业务需求和API文档理解。
|
2月前
|
XML Android开发 数据格式
Eclipse 创建 XML 文件
Eclipse 创建 XML 文件
37 2
|
3月前
|
数据采集 JSON 数据处理
抓取和分析JSON数据:使用Python构建数据处理管道
在大数据时代,电商网站如亚马逊、京东等成为数据采集的重要来源。本文介绍如何使用Python结合代理IP、多线程等技术,高效、隐秘地抓取并处理电商网站的JSON数据。通过爬虫代理服务,模拟真实用户行为,提升抓取效率和稳定性。示例代码展示了如何抓取亚马逊商品信息并进行解析。
抓取和分析JSON数据:使用Python构建数据处理管道
|
2月前
|
Java Maven
maven项目的pom.xml文件常用标签使用介绍
第四届人文,智慧教育与服务管理国际学术会议(HWESM 2025) 2025 4th International Conference on Humanities, Wisdom Education and Service Management
226 8
|
2月前
|
JSON API 数据安全/隐私保护
拍立淘按图搜索API接口返回数据的JSON格式示例
拍立淘按图搜索API接口允许用户通过上传图片来搜索相似的商品,该接口返回的通常是一个JSON格式的响应,其中包含了与上传图片相似的商品信息。以下是一个基于淘宝平台的拍立淘按图搜索API接口返回数据的JSON格式示例,同时提供对其关键字段的解释
|
2月前
|
JSON 数据格式 索引
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。
|
2月前
|
JSON 缓存 前端开发
PHP如何高效地处理JSON数据:从编码到解码
在现代Web开发中,JSON已成为数据交换的标准格式。本文探讨了PHP如何高效处理JSON数据,包括编码和解码的过程。通过简化数据结构、使用优化选项、缓存机制及合理设置解码参数等方法,可以显著提升JSON处理的性能,确保系统快速稳定运行。
|
2月前
|
存储 缓存 Dart
Flutter&鸿蒙next 封装 Dio 网络请求详解:登录身份验证与免登录缓存
本文详细介绍了如何在 Flutter 中使用 Dio 封装网络请求,实现用户登录身份验证及免登录缓存功能。首先在 `pubspec.yaml` 中添加 Dio 和 `shared_preferences` 依赖,然后创建 `NetworkService` 类封装 Dio 的功能,包括请求拦截、响应拦截、Token 存储和登录请求。最后,通过一个登录界面示例展示了如何在实际应用中使用 `NetworkService` 进行身份验证。希望本文能帮助你在 Flutter 中更好地处理网络请求和用户认证。
200 1
|
3月前
|
JSON JavaScript Java
在Java中处理JSON数据:Jackson与Gson库比较
本文介绍了JSON数据交换格式及其在Java中的应用,重点探讨了两个强大的JSON处理库——Jackson和Gson。文章详细讲解了Jackson库的核心功能,包括数据绑定、流式API和树模型,并通过示例演示了如何使用Jackson进行JSON解析和生成。最后,作者分享了一些实用的代码片段和使用技巧,帮助读者更好地理解和应用这些工具。
234 0
在Java中处理JSON数据:Jackson与Gson库比较
|
3月前
|
JSON API 数据格式
商品详情数据JSON格式示例参考(api接口)
JSON数据格式的商品详情数据通常包含商品的多个层级信息,以下是一个综合多个来源信息的JSON数据格式的商品详情数据示例参考: