1. 程式人生 > >php中json資料和xml資料的封裝

php中json資料和xml資料的封裝

<?php
/*
 * 作用:將p轉換為josn格式的資料
 * 備註:json_encode只接受UTF-8的編碼資料
*/
//echo json_encode($arr);

/*
 * 作用:將p3資料從p1編碼轉換為p2編碼
 * p1: 原編碼
 * p2: 目標編碼
 * p3: 要轉換編碼的資料
 */
//$newData = icov("UTF-8", "GBK", $data);

/*

php組裝xml串的方法
1、組裝字串
2、DomDocument
3、XMLWriter
4、SimpleXML

*/


class CPackData{

	const JSON = "json";

	/*
	 * 按json方式輸出通訊資料
	 * @param integer $code 狀態碼
	 * @param string $message 提示資訊
	 * @param array $data 資料
	 * @return string
	 */
	public static function json($code, $message = "", $data = array()){
		if (!is_numeric($code)){
			return;
		}

		$result = array(
			"code" => $code,
			"message" => $message,
			"data" => $data
		);

		echo json_encode($result);
		exit;
	}

	

	/*
	 * 按xml方式輸出通訊資料
	 * @param integer $code 狀態嗎
	 * @param string $message 提示資訊
	 * @param array $data 資料
	 * @return string
	 */
	public static function xmlEncode($code, $message = "", $data = array()){
		if (!is_numeric($code)) {
			return;
		}

		$result = array(
			"code" => $code,
			"message" => $message,
			"data" => $data
	    );

	    header("Content-Type:text/xml");
	    $xml = "<?xml version='1.0' encoding='UTF-8' ?>";
		$xml .= "<root>";
		$xml .= self::xmlToEncode($result);
		$xml .= "</root>";

		echo $xml;
	}

	public static function xmlToEncode($data){
		$xml = $attr = "";
		 foreach ($data as $key => $value) {

		 	// 當key是數字時,數字是不能作為xml的節點名稱的,所以做一個轉換,即如下:
		 	// <0>4</0> --> <item id="0">4</item>
		 	// 備註:新取一個名稱為Item的節點,將key值作為item的一個id屬性值儲存
		 	if (is_numeric($key))
		 	{
		 		$attr = " id='{$key}'";// 注意:id前面的空格不要漏掉了,值的單引號也不要漏掉了
		 		$key = "item";
		 	}

			$xml .= "<{$key}{$attr}>";
			$xml .= is_array($value) ? self::xmlToEncode($value) : $value;// 備註:如果直接寫成 $xml .= $value; 會出錯
			//$xml .= $value;
			$xml .= "</{$key}>";
		 }
		return $xml;
	}

	/*
	 * 按json方式輸出通訊資料
	 * @param integer $code 狀態碼
	 * @param string $message 提示資訊
	 * @param array $data 資料
	 * @param $type 封裝後的資料格式。 取值:json/xml
	 * @return string
	 */
	public static function commonPack($code, $message = "", $data = array(), $type = self::JSON){
		if (!is_numeric($code)) {
			return;
		}

		$type = isset($_GET["dataType"]) ? $_GET["dataType"] : self::JSON;

		$result = array(
			"code" => $code,
			"message" => $message,
			"data" => $data
		);

		if ($type == "json")
		{
			self::json($code, $message, $data);
			exit;
		}
		else if ($type == "xml")
		{
			self::xmlEncode($code, $message, $data);
			exit;
		}
		else if ($type == "debug")
		{
			var_dump($result);
		}
		else
		{
			// TODD: 其他業務處理
		}
	}


}



?>

測試程式碼(test.php):
<?php

require_once("./generate_data.php");

$arr = array(
	"id" => 1,
	"name" => "iBoost",
	"type" => array(4,5,6),
	"test" => array(1,45,67=>array(123,"test1"))
);

//CPackData::json(200, "資料返回成功", $arr);
//CPackData::xmlEncode(200, "success", $arr);
CPackData::commonPack(200,"success", $arr, "array");

?>

在瀏覽器中執行以上程式碼前,要先搭建好php的開發環境(此處略)

在瀏覽器中,

輸入:http://localhost/test_json.php

則列印json串

輸入:http://localhost/test_json.php?dataType=xml

則列印xml字串

輸入:http://localhost/test_json.php?dataType=debug

則列印除錯資訊

相關推薦

phpjson資料xml資料封裝

<?php /* * 作用:將p轉換為josn格式的資料 * 備註:json_encode只接受UTF-8的編碼資料 */ //echo json_encode($arr); /* * 作用:將p3資料從p1編碼轉換為p2編碼 * p1: 原編碼 * p

php寫介面例子返回jsonxml資料

<?php // echo md5("news1"); /* 查詢 介面地址:http://apis.juhe.cn/mobile/get 支援格式:json/xml 請求方

PHP對接APP的介面類,可返回json資料xml資料

<?php /* * APP資料處理類 * 作 者:永樂開發 * 日 期:2017.7.31 * 郵 箱:[email protected] * 博 客:http://www.isu5.cn http://it.alipea.com */ class R

php操作XML,讀取資料寫入資料的方法

xml檔案 <?xml version="1.0" encoding="utf-8"?> <vip> <id>23</id> <username>開心的路飛</username>

Ajax傳輸Jsonxml資料

ajax傳輸xml資料:只要把資料封裝成xml格式就可以實現傳輸,前臺js用responseXML接收xml引數,後臺讀取用流和dom4j來解析 前臺頁面 <%@ page language="java" import="java.util.*"

Qt讀取JSONXML資料

QJSON JSON(JavaScript Object Notation)是一個輕量級的資料交換格式; 可以將資料以name/value的形式任意組合; QJson 是一個基於Qt的庫, 將JSON的資料map成name-QVariant的形式, 或者進

java從控制檯輸入資料輸出資料到控制檯

1.從控制檯輸入資料 1.使用Scanner類來完成從命令列輸入資料到自己的程式中。 2.Scanner類是JDK1.5【jdk5.0】新增的一個開發類庫。 3.Scanner類使用     3.1先匯入Scanner類所在的程式包【java.util.Sca

ElasticSearch 學習記錄之 分散式文件儲存往ES資料資料的原理

分散式文件儲存 ES分散式特性 遮蔽了分散式系統的複雜性 叢集內的原理 垂直擴容和水平擴容 真正的擴容能力是來自於水平擴容–為叢集新增更多的節點,並且將負載壓力和穩定性分散到這些節點中 ES叢集特點 一個叢集擁有相同

PHP關於session的詳細資料(超有用)

------------------------------------php.ini中關於session屬性的相關設定------------------------------------- 1) session.use_cookies:是否在客戶端用 cookie 來存放會話 ID,1是開

springBoot專案的statictemplates資料

  記錄是為了更好的成長! 1、static檔案中的頁面 //這樣寫不能訪問static中index資料夾下的index.html頁面 @RequestMapping("index") public String hello() { return "/in

json的四大函式介紹(json資料python資料之間的轉換)

json的四大函式介紹 在我們進行後端開發和爬蟲開發的時候,常會遇到json資料和python資料的轉換, 而這些轉換雖然簡單,但是卻很容易讓人產生混淆和困惑, 接下來我將對json資料和python資料格式的轉換做一個小的介紹,希望對各位讀者能夠起到一定的幫助… 1.loa

php 獲取當前目錄當前資料

<?php /** * PHP獲取路徑或目錄實現 */ //魔術變數,獲取當前檔案的絕對路徑 echo "__FILE__: ========> ".__FILE__; echo PHP_EOL.PHP_EOL; //魔術變數,獲取當前指令碼的目錄 e

SpringBoot利用java反射機制,實現靈活讀取Excel表格資料匯出資料至Excel表格

如果直接把固定Excel表格模板中的資料匯入資料庫,直接將Excel中的資料讀取出來,再存入資料庫中即可,將資料匯出至固定的Excel模板方法類似。但是,有時候,開發製作的模板與客戶需要的往往有些許差別(欄位排版、欄位數量等)。為了實現匯入匯出的靈活性,將利用java的反射機

opencvrgb格式資料base64資料轉換

最近在做一個專案,需要將base64轉成圖片rgb格式。 一般的做法是將base64字串先解碼寫入檔案,然後再去cv2.imread讀取圖片。這樣就繞彎了,如果能夠從base64直接轉為imread得到的rbg矩陣,就會節省時間開銷,具體做法比較簡單: def base6

資料(MS-SQL)表插入資料更新資料

insert into dbo.time     -- insert data (id,name) values(3, 'herry'); update dbo.time1  set  id=4 where name='coly'   -- update  data

phptxt文件插入資料到伺服器

$mysql_server_name='127.0.0.1'; //改成自己的mysql資料庫伺服器   $mysql_username="root"; //改成自己的mysql資料庫使用者名稱 $mysql_password="root"; //改成自己的mysql資料庫密碼 $mysql_database

輕鬆上手使用ES6的SetMap資料結構

Set 基本用法 ES6提供了新的資料結構Set。它類似於陣列,但成員的值都是唯一的,沒有重複。Set本身是一個建構函式,用來生成Set資料結構。 const s = new Set(); [2, 3, 5, 4, 5, 2, 2].forEach( x =>

第014講:ScalaMapHashMap原始碼剖析及程式碼實踐(從1000個程式碼案例學習人工智慧資料實戰)

第014講:Scala中Map和HashMap原始碼剖析及程式碼實踐/** * A generic trait for immutable maps. Concrete classes have to provide * functionality for the abs

Java實現在文字檔案寫入資料讀取資料

Java實現在文字檔案中寫入資料和讀取資料 寫資料到文字檔案中去: 程式碼如下所示: import java.io.File; import java.io.FileWriter; import java.io.IOException; public class

在salesforce如何利用data loader匯入資料刪除資料(mac)

使用mac的小夥伴在為sf的物件匯入資料記錄和匯出並刪除記錄時,一定遇到了很多麻煩,總結有兩點: 1.匯入的資料格式出現問題; 2.不知道如何使用data loader刪除資料。 現提供一下解決方案: 問題1解決方案:使用excel編輯好資料記錄後,儲存為csv格式資料,然