如果将它改为关联数组:
$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 对象: