我的班级实现了
jsonSerialize in php
然后我的类实现了jsonSerialize方法并返回get_object_vars($ this)。
public function JsonSerialize()
{
$vars = get_object_vars($this);
return $vars;
}
这个问题是它返回包括NULL变量在内的所有值。 我怎样才能将非空变量作为json-output?
答案 0 :(得分:4)
将$vars
传递给array_filter()
功能。如果您没有为其提供回调,则会删除与FALSE
相同的所有内容
public function JsonSerialize()
{
$vars = array_filter(get_object_vars($this));
return $vars;
}
如果您只需删除NULL
属性并保留其他FALSE
- 类似的值(空字符串,零等),那么您需要编写一个函数来决定要保留什么以及删除什么:
public function JsonSerialize()
{
$vars = array_filter(
get_object_vars($this),
function ($item) {
// Keep only not-NULL values
return ! is_null($item);
}
);
return $vars;
}
答案 1 :(得分:2)
只需过滤$vars
vor null值:
<?php
public function JsonSerialize()
{
$vars = get_object_vars($this);
return array_filter($vars, function ($value) {
return null !== $value;
});
}