在编码为json时,有没有办法在php中忽略类的特定类属性。
例如在带有jackson库的java中,我可以用@JsonIgnore注释全局变量来实现这一点。在PHP中有没有可比的(最好是原生的)?
答案 0 :(得分:5)
一种方法是使用JsonSerializable
interface。这样,您就可以创建一个在您的班级调用json_encode()
时调用的函数。
例如:
class MyClass implements JsonSerializable{
public $var1, $var2;
function __construct($a1, $a2){
$this->var1 = $a1;
$this->var2 = $a2;
}
// From JsonSerializable
public function jsonSerialize(){
return ['var1' => $this->var1];
}
}
因此,当调用json_encode()
时,只会编码var1
。
$myObj = new MyClass(10, 20);
echo json_encode($myObj); // {"var1":10}
注意:这仅适用于PHP 5.4 +