|
發表者 |
討論內容 |
冷日 (冷日) |
發表時間:2015/8/4 9:34 |
- Webmaster

- 註冊日: 2008/2/19
- 來自:
- 發表數: 15771
|
- [轉貼]你不可不知的 JSON 基本介紹
還不知道 JSON 是什麼嘛?本篇教學會帶您瞭解 JSON 在網站上的應用,以及運作流程跟使用 PHP 和 JavaScript 來處理 JSON。假如您現在的工作就是網站設計師,相信一定聽過 JSON,但是什麼是 JSON,它能夠做什麼,及您能透過它在網站上做到哪些事情呢? 透過本篇介紹您可以瞭解基本的 JSON,底下會列出本篇會提到的重點: - 什麼是 JSON
- JSON 應用在哪些地方
- 如何建立 JSON 字串
- 一個簡單的 JSON 範例
- JSON vs XML
- 如何透過 PHP 及 JavaScript 使用 JSON
什麼是 JSONJSON 是個以純文字為基底去儲存和傳送簡單結構資料,你可以透過特定的格式去儲存任何資料(字串,數字,陣列,物件),也可以透過物件或陣列來傳送較複雜的資料。一旦建立了您的 JSON 資料,就可以非常簡單的跟其他程式溝通或交換資料,因為 JSON 就只是純文字個格式。 JSON 的優點如下: - 相容性高
- 格式容易瞭解,閱讀及修改方便
- 支援許多資料格式 (number,string,booleans,nulls,array,associative array)
- 許多程式都支援函式庫讀取或修改 JSON 資料
JSON 應用在哪些地方JSON 最常用用在 Web 網頁程式從 Server 端傳送資料給 browser,典型範例就是透過 AJAX 方式交換 JSON 資料,底下簡單舉個範例 - 使用者點選了線上產品縮圖
- JavaScript 透過 AJAX 方式將產品 ID 傳送給伺服器端
- 伺服器端收到 ID,將產品資料 (ex 價格,描述) 編碼成 JSON 資料,並且回傳給瀏覽器
- JavaScript 收到 JSON 資料,將其解碼 (decode) 並且將資料顯示在網頁上
您也可以透過網頁將 JSON 資料傳到伺服器端,這都是可以的,把 POST 或 GET 資訊編碼成 JSON 格式即可,如果有在使用 jQuery,它提供了兩個函式處理 JSON,分別是 getJSON 跟 parseJSON。 如何建立 JSON 字串可以透過底下規則來建立 JSON 字串 - JSON 字串可以包含陣列 Array 資料或者是物件 Object 資料
- 陣列可以用 [ ] 來寫入資料
- 物件可以用 { } 來寫入資料
- name / value 是成對的,中間透過 ( :
) 來區隔 物件或陣列的 value 值可以如下: - 數字 (整數或浮點數)
- 字串 (請用 “” 括號)
- 布林函數 (boolean) (true 或 false)
- 陣列 (請用 [ ] )
- 物件 (請用 { } )
- NULL
一個簡單的 JSON 範例
"orderID": 12345,
"shopperName": "John Smith",
"shopperEmail": "johnsmith@example.com",
"contents": [
{
"productID": 34,
"productName": "SuperWidget",
"quantity": 1
},
{
"productID": 56,
"productName": "WonderWidget",
"quantity": 3
}
],
"orderCompleted": true
}
由上面例子我們可以發現 contents 陣列裡面又包含物件,透過上面例子,我們寫成 JavaScript 如下: <script type="text/javascript">
var cart = {
"orderID": 12345,
"shopperName": "John Smith",
"shopperEmail": "johnsmith@example.com",
"contents": [
{
"productID": 34,
"productName": "SuperWidget",
"quantity": 1
},
{
"productID": 56,
"productName": "WonderWidget",
"quantity": 3
}
],
"orderCompleted": true
};
</script>
JSON vs XML在許多方面,你可以想像 JSON 來替代 XML,在過去 Web Application 開發 AJAX 都是透過 XML 來交換資料,但是你可以發現近幾年來 JSON 已經漸漸取代 XML 格式了,為什麼會變成這樣呢?因為 JSON 格式容易閱讀且好修改,許多程式語言分別開發了函式庫來處理 JSON 資料,我們可以把上面的 JSON 資料改寫成 XML 如下: <object>
<property>
<key>orderID</key>
<number>12345</number>
</property>
<property>
<key>shopperName</key>
<string>John Smith</string>
</property>
<property>
<key>shopperEmail</key>
<string>johnsmith@example.com</string>
</property>
<property>
<key>contents</key>
<array>
<object>
<property>
<key>productID</key>
<number>34</number>
</property>
<property>
<key>productName</key>
<string>SuperWidget</string>
</property>
<property>
<key>quantity</key>
<number>1</number>
</property>
</object>
<object>
<property>
<key>productID</key>
<number>56</number>
</property>
<property>
<key>productName</key>
<string>WonderWidget</string>
</property>
<property>
<key>quantity</key>
<number>3</number>
</property>
</object>
</array>
</property>
<property>
<key>orderCompleted</key>
<boolean>true</boolean>
</property>
</object>
大家有沒有發現 XML 的資料量遠大於 JSON 資料量,這也是 JSON 優於 XML 的原因之一 如何利用 JavaScript 來處理 JSON 資料直接看例子比較快:
<script type="text/javascript">
var cart = {
"orderID": 12345,
"shopperName": "John Smith",
"shopperEmail": "johnsmith@example.com",
"contents": [
{
"productID": 34,
"productName": "SuperWidget",
"quantity": 1
},
{
"productID": 56,
"productName": "WonderWidget",
"quantity": 3
}
],
"orderCompleted": true
};
alert ( JSON.stringify( cart ) );
</script>
透過 JSON.stringify 來轉換資料,產生結果如下
{"orderID":12345,"shopperName":"John Smith","shopperEmail":"johnsmith@example.com",
"contents":[{"productID":34,"productName":"SuperWidget","quantity":1},
{"productID":56,"productName":"WonderWidget","quantity":3}],
"orderCompleted":true}
如何將 JSON 字串傳入 JavaScript 變數 <script type="text/javascript">
var jsonString = ' \
{ \
"orderID": 12345, \
"shopperName": "John Smith", \
"shopperEmail": "johnsmith@example.com", \
"contents": [ \
{ \
"productID": 34, \
"productName": "SuperWidget", \
"quantity": 1 \
}, \
{ \
"productID": 56, \
"productName": "WonderWidget", \
"quantity": 3 \
} \
], \
"orderCompleted": true \
} \
';
var cart = JSON.parse ( jsonString );
alert ( cart.shopperEmail );
alert ( cart.contents[1].productName );
</script>
結果如下 cart.shopperEmail 輸出 johnsmith@example.com cart.contents[1].productName 輸出 WonderWidget 利用 PHP 建立或讀取 JSON 資料PHP 直接有寫好函式庫可以處理 JSON 字串,就是利用 json_encode 跟 json_decode 範例: <?php
$cart = array(
"orderID" => 12345,
"shopperName" => "John Smith",
"shopperEmail" => "johnsmith@example.com",
"contents" => array(
array(
"productID" => 34,
"productName" => "SuperWidget",
"quantity" => 1
),
array(
"productID" => 56,
"productName" => "WonderWidget",
"quantity" => 3
)
),
"orderCompleted" => true
);
echo json_encode( $cart );
?>
輸出
{"orderID":12345,"shopperName":"John Smith","shopperEmail":"johnsmith@example.com","contents":[{"productID":34,"productName":"SuperWidget","quantity":1},{"productID":56,"productName":"WonderWidget","quantity":3}],"orderCompleted":true}
大家可以發現,我們只要用 array 方式將資料輸出,再透過 json_encode 就可以了,接下來看看底下 PHP 如何讀取 JSON 字串 <?php
$jsonString = '
{
"orderID": 12345,
"shopperName": "John Smith",
"shopperEmail": "johnsmith@example.com",
"contents": [
{
"productID": 34,
"productName": "SuperWidget",
"quantity": 1
},
{
"productID": 56,
"productName": "WonderWidget",
"quantity": 3
}
],
"orderCompleted": true
}
';
$cart = json_decode( $jsonString );
echo $cart->shopperEmail . "<br>";
echo $cart->contents[1]->productName . "<br>";
?>
很簡單吧,PHP 利用了 json_decode 方式將 json 轉成變數資料以便讀取內容。 結論這篇介紹主要是讓大家對 JSON 有基本得瞭解,以及如何用 JavaScript 跟 PHP 處理 JSON 資料,其實就不難,希望對大家有幫助。 本篇範例皆來自 JSON Basics: What You Need to Know 文章 原文出處:你不可不知的 JSON 基本介紹 | 小惡魔 - 電腦技術 - 工作筆記 - AppleBOY
|
|
冷日 (冷日) |
發表時間:2015/8/4 9:40 |
- Webmaster

- 註冊日: 2008/2/19
- 來自:
- 發表數: 15771
|
- [轉貼]PHP 讓 json_encode() 指定回傳格式
PHP 讓 json_encode() 指定回傳格式PHP 回傳 JSON 很方便, 只要將資料經過 json_encode() 就解決了. 不過因為 PHP 自動轉換型別, 造成很多資料都習慣存成字串, 希望在輸出 JSON 的時候, 數字部份可以輸出成數字, 該怎麼做呢? 另一個問題, PHP 轉換成 JSON, 部份陣列會被轉成物件(因為 JavaScript 陣列的 Key 必須是數字, 所以會轉成物件), 要全部強制轉成物件, 該怎麼做呢? PHP 讓 json_encode() 指定回傳格式上述的問題, json_encode() 的參數都可以解決. json_encode() 有這些參數可以用: - JSON_HEX_QUOT
- JSON_HEX_TAG
- JSON_HEX_AMP
- JSON_HEX_APOS
- JSON_NUMERIC_CHECK
- JSON_PRETTY_PRINT
- JSON_UNESCAPED_SLASHES
- JSON_FORCE_OBJECT
PHP 判斷型別輸出 JSON 數字型態主要靠 json_encode 的 JSON_NUMERIC_CHECK 參數, ex: <?php
echo json_encode(array('id' => '123', 'data' => 'abc'), JSON_NUMERIC_CHECK);
echo json_encode(array('id' => '123', 'data' => 'abc'));
echo json_encode(array('id' => 123, 'data' => 'abc'));
?>
輸出結果 - {"id":123,"data":"abc"}
- {"id":"123","data":"abc"}
- {"id":123,"data":"abc"}
PHP 強迫輸出 JSON 物件格式主要靠 json_encode 的 JSON_FORCE_OBJECT 參數, ex: <?php
echo json_encode(array(1, 2, 3));
echo json_encode(array(1, 2, 3), JSON_FORCE_OBJECT);
echo json_encode(array(array(1, 2, 3)));
echo json_encode(array(array(1, 2, 3)), JSON_FORCE_OBJECT);
echo json_encode(array(1 => 123, 2 => 'abc'));
?>
輸出結果 - [1,2,3]
- {"0":1,"1":2,"2":3}
- [[1,2,3]]
- {"0":{"0":1,"1":2,"2":3}}
- {"1":123,"2":"abc"} // 本來就會輸出 Object
原文出處:PHP 讓 json_encode() 指定回傳格式 - Tsung's Blog
|
|
冷日 (冷日) |
發表時間:2015/8/4 9:43 |
- Webmaster

- 註冊日: 2008/2/19
- 來自:
- 發表數: 15771
|
- [轉貼]使用 jquery 跟 php 接 json 格式資料
- 使用jquery跟php接json格式資料
分享時間:2012-10-09 21:05:39
首先請php吐一個json格式的檔案出來
<?php
$city = array();
$city["0"] = array ("name"=>"Jason", "tel"=>"0919000000", "address"=> "新竹");
$city["1"] = array ("name"=>"May", "tel"=>"0928222222", "address"=> "桃園");
echo json_encode($city);
?>
吐出來的json格式長這樣:
[
{ name: "Jason", tel: "0919000000", address: "新竹" },
{ name: "May", tel: "0928000000", address: "桃園" },
]
json是一種javascript的物件,因為他本身是javascript,轉換起來沒問題,加上不像xml這麼肥,所以這幾年來很流行。
因為他類似xml,所以我們也可以做巢狀的結構,像這樣包起來。
$dataArr=array(
"date"=>"2012-01-01",
"shoes" => array(
"kind1" => 2,
"kind2" =>3
)
真正在應用的時候會把資料庫撈出來的資料,用迴圈的方式弄成json的格式,再用ajax去parse出來。
$.ajax({
url: "json.php",
type: "GET",
dataType: "json",
success: function(json) {
}
});
接成功後再把資料撈出來就可以了。
var NumOfData = json.length; //取出物件長度
//繞行把資料alert出來
for (var i = 0; i < NumOfData; i++) {
alert("Name: "+data[i]["name"]);
alert("Tel: "+data[i]["tel"]);
alert("Address: "+data[i]["address"]);
}
所以你可以這樣把資料append到DOM裡。
var $div=$("div");
for (var i = 0; i < NumOfData; i++) {
$div.append("Name: "+json[i]["name"]+", Tel: "+json[i]["tel"]+", Address: "+json[i]["address"]);
$div.append("<br/>");
}
如果要取到第二層資料,則是這樣
json[i]["level1"]["level2"]
原文出處:使用jquery跟php接json格式資料 - iT邦幫忙::IT知識分享社群
|
|
|
冷日 (冷日) |
發表時間:2015/8/4 9:46 |
- Webmaster

- 註冊日: 2008/2/19
- 來自:
- 發表數: 15771
|
- [轉貼]在 PHP 語言中使用 JSON
在PHP語言中使用JSON目前, JSON已經成為最流行的數據交換格式之一,各大網站的API幾乎都支持它。 我寫過一篇 《數據類型和JSON格式》,探討它的設計思想。今天,我想總結一下PHP語言對它的支持,這是開發互聯網應用程式(特別是編寫API)必須瞭解的知識。 從5.2版本開始,PHP原生提供 json_encode()和 json_decode()函數,前者用於編碼,後者用於解碼。 一、json_encode() 該函數主要用來將數組和對象,轉換為json格式。先看一個數組轉換的例子:
$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
echo json_encode($arr);
結果為
{"a":1,"b":2,"c":3,"d":4,"e":5}
再看一個對像轉換的例子:
$obj->body = 'another post';
$obj->id = 21;
$obj->approved = true;
$obj->favorite_count = 1;
$obj->status = NULL;
echo json_encode($obj);
結果為
{
"body":"another post",
"id":21,
"approved":true,
"favorite_count":1,
"status":null
}
由於json只接受utf-8編碼的字符,所以json_encode()的參數必須是utf-8編碼,否則會得到空字符或者null。當中文使用GB2312編碼,或者外文使用ISO-8859-1編碼的時候,這一點要特別注意。 二、索引數組和關聯數組 PHP支持兩種數組,一種是只保存"值"(value)的索引數組(indexed array),另一種是保存"名值對"(name/value)的關聯數組(associative array)。 由於javascript不支持關聯數組,所以json_encode()只將索引數組(indexed array)轉為數組格式,而將關聯數組(associative array)轉為對像格式。 比如,現在有一個索引數組
$arr = Array('one', 'two', 'three');
echo json_encode($arr);
結果為:
如果將它改為關聯數組:
$arr = Array('1'=>'one', '2'=>'two', '3'=>'three');
echo json_encode($arr);
結果就變了:
{"1":"one","2":"two","3":"three"}
注意,數據格式從"[]"(數組)變成了"{}"(對像)。 如果你需要將"索引數組"強制轉化成"對像",可以這樣寫
json_encode( (object)$arr );
或者
json_encode ( $arr, JSON_FORCE_OBJECT );
三、類(class)的轉換 下面是一個PHP的類:
class Foo {
const ERROR_CODE = '404';
public $public_ex = 'this is public';
private $private_ex = 'this is private!';
protected $protected_ex = 'this should be protected';
public function getErrorCode() {
return self::ERROR_CODE;
}
}
現在,對這個類的實例進行json轉換:
$foo = new Foo;
$foo_json = json_encode($foo);
echo $foo_json;
輸出結果是
{"public_ex":"this is public"}
可以看到,除了公開變量(public),其他東西(常量、私有變量、方法等等)都遺失了。 四、json_decode() 該函數用於將json文本轉換為相應的PHP數據結構。下面是一個例子:
$json = '{"foo": 12345}';
$obj = json_decode($json);
print $obj->{'foo'}; // 12345
通常情況下,json_decode()總是返回一個PHP對象,而不是數組。比如:
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json));
結果就是生成一個PHP對像:
object(stdClass)#1 (5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
如果想要強制生成PHP關聯數組,json_decode()需要加一個參數true:
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json,true));
結果就生成了一個關聯數組:
array(5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
五、json_decode()的常見錯誤 下面三種json寫法都是錯的,你能看出錯在哪裡嗎?
$bad_json = "{ 'bar': 'baz' }";
$bad_json = '{ bar: "baz" }';
$bad_json = '{ "bar": "baz", }';
對這三個字符串執行json_decode()都將返回null,並且報錯。 第一個的錯誤是,json的分隔符(delimiter)只允許使用雙引號,不能使用單引號。第二個的錯誤是,json名值對的"名"(冒號左邊的部分),任何情況下都必須使用雙引號。第三個的錯誤是,最後一個值之後不能添加逗號(trailing comma)。 另外,json只能用來表示對像(object)和數組(array),如果對一個字符串或數值使用json_decode(),將會返回null。
var_dump(json_decode("Hello World")); //null
六、參考材料 [1] PHP Manual [2] Ed Finkler, JSON is Everybody's Friend
(完)
原文出處:在PHP语言中使用JSON - 阮一峰的网络日志
|
|
|
冷日 (冷日) |
發表時間:2015/8/4 9:50 |
- Webmaster

- 註冊日: 2008/2/19
- 來自:
- 發表數: 15771
|
- [轉貼] php 中 json_decode() 和 json_encode() 的使用方法
php中json_decode()和json_encode()的使用方法 1.json_decode()
json_decode (PHP 5 >= 5.2.0, PECL json >= 1.2.0) json_decode — 對 JSON 格式的字符串進行編碼 說明 mixed json_decode ( string $json [, bool $assoc ] ) 接受一個 JSON 格式的字符串並且把它轉換為 PHP 變量 參數 json 待解碼的 json string 格式的字符串。 assoc 當該參數為 TRUE 時,將返回 array 而非 object 。 返回值 Returns an object or if the optional assoc parameter is TRUE, an associative array is instead returned. 範例 Example #1 json_decode() 的例子 代碼如下: $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; var_dump(json_decode($json)); var_dump(json_decode($json, true)); ?>
上例將輸出: 代碼如下: object(stdClass)#1 (5) { ["a"] => int(1) ["b"] => int(2) ["c"] => int(3) ["d"] => int(4) ["e"] => int(5) } array(5) { ["a"] => int(1) ["b"] => int(2)
["c"] => int(3) ["d"] => int(4) ["e"] => int(5) }
代碼如下: $data='[{"Name":"a1","Number":"123","Contno":"000","QQNo":""},{"Name":"a1","Number":"123","Contno":"000","QQNo":""},{"Name":"a1","Number":"123","Contno":"000","QQNo":""}]'; echo json_decode($data);
結果為: 代碼如下: Array ( [0] => stdClass Object ( [Name] => a1 [Number] => 123 [Contno] => 000 [QQNo] => ) [1] => stdClass Object ( [Name] => a1 [Number] => 123 [Contno] => 000 [QQNo] => ) [2] => stdClass Object ( [Name] => a1 [Number] => 123 [Contno] => 000 [QQNo] => ) )
可以看出經過json_decode()編譯出來的是對像,現在輸出json_decode($data,true)試下 代碼如下: echo json_decode($data,true);
結果: 代碼如下:
Array ( [0] => Array ( [Name] => a1 [Number] => 123 [Contno] => 000 [QQNo] => ) [1] => Array ( [Name] => a1 [Number] => 123 [Contno] => 000 [QQNo] => ) [2] => Array ( [Name] => a1 [Number] => 123 [Contno] => 000 [QQNo] => ) )
可以看出 json_decode($data,true)輸出的一個關聯數組,由此可知json_decode($data)輸出的是對像,而json_decode("$arr",true)是把它強制生成PHP關聯數組. 2.json_encode()
json_encode (PHP 5 >= 5.2.0, PECL json >= 1.2.0) json_encode — 對變量進行 JSON 編碼 Report a bug 說明 string json_encode ( mixed $value [, int $options = 0 ] ) 返回 value 值的 JSON 形式 Report a bug 參數 value 待編碼的 value ,除了resource 類型之外,可以為任何數據類型 該函數只能接受 UTF-8 編碼的數據 options 由以下常量組成的二進制掩碼: JSON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, JSON_NUMERIC_CHECK, JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, JSON_FORCE_OBJECT, JSON_UNESCAPED_UNICODE. Report a bug 返回值 編碼成功則返回一個以 JSON 形式表示的 string 或者在失敗時返回 FALSE 。 Report a bug 更新日誌 版本 說明 5.4.0 options 參數增加常量: JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, 和 JSON_UNESCAPED_UNICODE。 5.3.3 options 參數增加常量:JSON_NUMERIC_CHECK。 5.3.0 增加 options 參數. Report a bug 範例 Example #1 A json_encode() 的例子 代碼如下: $arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5); echo json_encode($arr); ?>
以上例程會輸出: 代碼如下: {"a":1,"b":2,"c":3,"d":4,"e":5}
Example #2 json_encode() 函數中 options 參數的用法 代碼如下:
$a = array('',"'bar'",'"baz"','&blong&', "\xc3\xa9"); echo "Normal: ", json_encode($a), "\n"; echo "Tags: ", json_encode($a, JSON_HEX_TAG), "\n"; echo "Apos: ", json_encode($a, JSON_HEX_APOS), "\n"; echo "Quot: ", json_encode($a, JSON_HEX_QUOT), "\n"; echo "Amp: ", json_encode($a, JSON_HEX_AMP), "\n"; echo "Unicode: ", json_encode($a, JSON_UNESCAPED_UNICODE), "\n"; echo "All: ", json_encode($a, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE), "\n\n"; $b = array(); echo "Empty array output as array: ", json_encode($b), "\n"; echo "Empty array output as object: ", json_encode($b, JSON_FORCE_OBJECT), "\n\n"; $c = array(array(1,2,3)); echo "Non-associative array output as array: ", json_encode($c), "\n"; echo "Non-associative array output as object: ", json_encode($c, JSON_FORCE_OBJECT), "\n\n"; $d = array('foo' => 'bar', 'baz' => 'long'); echo "Associative array always output as object: ", json_encode($d), "\n"; echo "Associative array always output as object: ", json_encode($d, JSON_FORCE_OBJECT), "\n\n"; ?>
以上例程會輸出: 代碼如下: Normal: ["","'bar'","\"baz\"","&blong&","\u00e9"] Tags: ["\u003Cfoo\u003E","'bar'","\"baz\"","&blong&","\u00e9"] Apos: ["","\u0027bar\u0027","\"baz\"","&blong&","\u00e9"] Quot: ["","'bar'","\u0022baz\u0022","&blong&","\u00e9"] Amp: ["","'bar'","\"baz\"","\u0026blong\u0026","\u00e9"] Unicode: ["","'bar'","\"baz\"","&blong&","e"] All: ["\u003Cfoo\u003E","\u0027bar\u0027","\u0022baz\u0022","\u0026blong\u0026","e"] Empty array output as array: [] Empty array output as object: {} Non-associative array output as array: [[1,2,3]] Non-associative array output as object: {"0":{"0":1,"1":2,"2":3}} Associative array always output as object: {"foo":"bar","baz":"long"} Associative array always output as object: {"foo":"bar","baz":"long"}
Example #3 連續與非連續數組示例 代碼如下:
echo "連續數組".PHP_EOL; $sequential = array("foo", "bar", "baz", "blong"); var_dump( $sequential, json_encode($sequential) ); echo PHP_EOL."非連續數組".PHP_EOL; $nonsequential = array(1=>"foo", 2=>"bar", 3=>"baz", 4=>"blong"); var_dump( $nonsequential, json_encode($nonsequential) ); echo PHP_EOL."刪除一個連續數組值的方式產生的非連續數組".PHP_EOL; unset($sequential[1]); var_dump( $sequential, json_encode($sequential) ); ?>
以上例程會輸出: 代碼如下: 連續數組 array(4) { [0]=> string(3) "foo" [1]=> string(3) "bar" [2]=> string(3) "baz" [3]=> string(5) "blong" } string(27) "["foo","bar","baz","blong"]" 非連續數組 array(4) { [1]=> string(3) "foo" [2]=> string(3) "bar" [3]=> string(3) "baz" [4]=> string(5) "blong" } string(43) "{"1":"foo","2":"bar","3":"baz","4":"blong"}" 刪除一個連續數組值的方式產生的非連續數組 array(3) {
[0]=> string(3) "foo" [2]=> string(3) "baz" [3]=> string(5) "blong" } string(33) "{"0":"foo","2":"baz","3":"blong"}"
代碼如下: $obj->Name= 'a1';$obj->Number ='123'; $obj->Contno= '000'; echo json_encode($obj);
結果為: 代碼如下: {"Name":"a1", "Number":"123", "Contno":"000" }
可以看出json_encode()和json_decode()是編譯和反編譯過程,注意json只接受utf-8編碼的字符,所以json_encode()的參數必須是utf-8編碼,否則會得到空字符或者null。 原文出處: php中json_decode()和json_encode()的使用方法_php技巧_脚本之家
|
|
|