php不支持json_decode的解决办法:首先实现JsonSerializable抽象类的接口方法jsonSerialize;然后指定需要被序列化成JSON的数据即可。

本文操作环境:windows7系统、PHP7.1版,DELL G3电脑
php不支持json_decode怎么办?php json_encode不支持对象私有属性的解决方法
本文介绍php json_encode不支持对象私有属性的解决方法,json_encode可以把对象转为json格式,使用json_decode可以还原为对象。
但如果对象内含有私有属性,执行json_encode后,私有属性会丢失。
立即学习“PHP免费学习笔记(深入)”;
例子:json_encode丢失对象私有属性
输出:
{"id":1,"name":"fdipzone","profession":"programmer"}
object(stdClass)[2]
public 'id' => int 1
public 'name' => string 'fdipzone' (length=8)
public 'profession' => string 'programmer' (length=10)在执行json_encode后,私有属性age丢失了。
支持静态模板,支持动态模板标签,支持图片.SWF.FLV系列广告标签.支持百万级海量数据,绑定内置URL伪装策略(URL后缀名随你怎么写),绑定内置系统升级策略(暂不开放升级),绑定内置模板付费升级策略(暂不开放更新)。支持标签容错处理,绑定内置攻击防御策略,绑定内置服务器优化策略(系统内存释放的干干净净)。支持离线运行,支持次目录,兼容U主机。支持会员功能,支持文章版块权限阅读,支持会员自主注册
json_encode后对象的私有属性丢失解决方法
我们可以修改类,使其实现JsonSerializable抽象类的接口方法jsonSerialize,指定需要被序列化成JSON的数据。
关于JsonSerializable::jsonSerialize方法可参考官网:http://php.net/manual/zh/jsonserializable.jsonserialize.php
修改后代码如下:
$val){
if ($val !== null) $data[$key] = $val;
}
return $data;
}
}
// 对象
$oUser = new User;
// json_encode
$json = json_encode($oUser);
echo $json;
// json_decode
$oUser = json_decode($json);
var_dump($oUser);
?>输出:
{"id":1,"name":"fdipzone","profession":"programmer","age":18}
object(stdClass)[2]
public 'id' => int 1
public 'name' => string 'fdipzone' (length=8)
public 'profession' => string 'programmer' (length=10)
public 'age' => int 18在指定了需要被序列化成JSON的数据后,json_encode可以读取到私有属性age。
推荐学习:《PHP视频教程》










