如何在php中获取jsonSerialize接口的非null值?

时间:2015-02-10 10:32:22

标签: php json

我的班级实现了

  

jsonSerialize in php

然后我的类实现了jsonSerialize方法并返回get_object_vars($ this)。

 public function JsonSerialize()
{
    $vars = get_object_vars($this);

    return $vars;
}

这个问题是它返回包括NULL变量在内的所有值。 我怎样才能将非空变量作为json-output?

2 个答案:

答案 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;
    });
}