最近更新: 2006-08-03

PHP~~JSON in PHP

What is JSON (JavaScript Object Notation): Introducing JSON

目前已有多種方式可在 PHP 中運用 JSON 。個人建議使用 php-json ,這是 C 語言實作的 PHP extension 。

php-json 以 GNU LGPL 條款散佈,目前的 Debian unstable 版本,已經提供了 php-json 的 package 。在作者的網站上,則可以下載原始碼和 win32 版本的 binary ,我在 win32 版本的 PHP5 中使用正常。由於是 native function 的形式,故速度最快,優於其他以 PHP 實作者。但缺點是,並非多數系統預設安裝的 PHP extension ,特別是虛擬主機的用戶,通常不會支援 php-json 。此時只能選擇以 PHP 實作者,例如: Services_JSON (BSD license),或者是Zend-Json (New BSD license)。

使用方法大同小異,都是一對相應函數,以 php-json 為例,即為 json_encode()/json_decode() 。可見作者網站之範例,或如下範例,還有PHP::serialize and unserialize with Form 的範例。注意, JSON 規範使用 UTF-8 字元,因此在非 UTF-8 環境下,需先用 iconv() 將非 UTF-8 字元轉換成 UTF-8 字元。例如以下的範例,由於沒有調用 iconv() 轉成編碼,在非 UTF-8 環境下,會發生錯誤。如果是在 UTF-8 環境下,就沒有問題。

<?php
$ar = array(
    array(
        'Name' => '涼宮ハルヒン',
        'Book' => '涼宮ハルヒの憂鬱',
        'Attrib' => 'SOS団長'
    ),
    array(
        'Name' => 'キョン',
        'Book' => '涼宮ハルヒの憂鬱',
        'Attrib' => '普通人'
    ),
    array(
        'Name' => '長門有希',
        'Book' => '涼宮ハルヒの憂鬱',
        'Attrib' => '宇宙人'
    ),
    array(
        'Name' => '朝比奈みくる',
        'Book' => '涼宮ハルヒの憂鬱',
        'Attrib' => '穿越時空的少女'
    ),
    array(
        'Name' => '古泉一樹',
        'Book' => '涼宮ハルヒの憂鬱',
        'Attrib' => '超能力戰隊少年'
    )
);

$serialized_ar = json_encode($ar);

$ar2 = json_decode($serialized_ar);

var_dump($ar2);
?>
相關文章
樂多舊網址: http://blog.roodo.com/rocksaying/archives/1966080.html

樂多舊回應
未留名 (#comment-18159827)
Mon, 15 Dec 2008 19:17:38 +0800
請問如何支援中文字?
我是用uft8的環境
可是顯示出來的是亂碼