當前位置:
首頁 > 知識 > json和xml封裝數據、數據緩存到文件中

json和xml封裝數據、數據緩存到文件中


json和xml封裝數據、數據緩存到文件中

一、APP的通信格式之xml

xml:擴展標記語言,可以用來標記數據,定義數據類型,是一種允許用戶對自己標記語言進行定義的源語言。XML格式統一,擴平台語言,非常適合數據傳輸和通信,業界公認的標準。

支持操作系統:windows、linux

支持語言:python、php、java

json和xml封裝數據、數據緩存到文件中

二、APP的通信格式之json

JSON是一種輕量級的數據交換語言,以文字為基礎,且易於讓人閱讀,同時也方便了機器進行解析和生成。

JSON簡單的說是javascript中的對象和數組,所以這兩種結構就是對象和數組兩種結構,通過這兩種結構可以表示各種複雜的結構,其可以將Javascript對象中表示的一組數據轉換為字元串,然後就可以在函數之間輕鬆的傳遞這個字元串,或者在非同步應用程序中將字元串從Web客戶機傳遞給伺服器端程序。

JSON採用完全獨立於程序語言的文本格式。JSON是理想的數據交換語言。

json和xml封裝數據、數據緩存到文件中

三、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

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 = "

30

31 ".$code."

32 ".$message."

33 ";

34 $str.=self::item($data);

35 $str.="

36 ";

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 .="".self::item($value)."
";

48 }else{

49 $str .="<$key>{$value}
";

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 ?>

七、數據緩存到文件中,代碼如下:


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封裝數據、數據緩存到文件中

(本文轉載自博客園)



50天安卓課,自己解決住宿問題即可免費學習!

http://www.ujiuye.com/xydt/2017/13748.html?wt.bd=qzb36000j

想就業就就業,優就業就業扶持計劃,拿到滿意的工作offer就是這麼簡單

http://www.ujiuye.com/zt/jyfc/?wt.bd=qzb36000j

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 IT優就業 的精彩文章:

MOD命名規範
css中的層疊性及權重的比較
HTML鏈接與JAVASCRIPT鏈接
vue的增刪改查
python類的繼承

TAG:IT優就業 |

您可能感興趣

Flutter圖片緩存 Image.network源碼分析
python的緩存庫:cacheout
windows緩存
TinyShop緩存文件獲取WebShell之0day
redis緩存和cookie實現Session共享
MyBatis中的緩存
SpringBoot:SpringDataRedis緩存改造
緩存架構SpringBoot集成Curator實現zookeeper分散式鎖
spring-boot-2.0.3之redis緩存實現
Hitachi Vantara升級Skylaking伺服器加入Optane緩存和GPU
開源分散式內存緩存系統 Memcrashed 被利用發起 DDoS 放大攻擊,峰值竟達 500 Gbps
Windows、Linux等系統遭遇頁面緩存旁路攻擊
使用RedisTemplate(JDK序列化策略)緩存實體類
Python + Memcached:在分散式應用程序中實現高效緩存
Python + Memcached: 在分散式應用程序中實現高效緩存
Python+Memcached:在分散式應用程序中實現高效緩存
int 和 Integer 有什麼區別?談談 Integer 的值緩存範圍
逍遙-《Go實現的高性能http緩存伺服器Jaguar》
HashCache:低內存緩存存儲系統
杉岩數據智能緩存技術AgileCache亮相2018 Ceph亞太峰會