background image

如果将它改为关联数组:

$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 对象: