如何在PHP中检查JSON对象是否为空?

vav*_*ava 20 php json

我正在使用PHP读取JSON数据,并且该数据包含空对象(如{}).所以问题是,我必须以不同的方式处理对象为空的情况,但我找不到足够好的方法来进行检查.empty(get_object_vars(object))看起来太可怕而且非常低效.有没有好的方法来检查?

Gre*_*reg 25

您可以将其强制转换为数组(遗憾的是,您无法在调用时执行此操作empty():

$x = (array)$obj;
if (empty($x))
    ...
Run Code Online (Sandbox Code Playgroud)

或者转换为数组并且count():

if (count((array)$obj))
    ...
Run Code Online (Sandbox Code Playgroud)

  • 我没有对它进行测试,但除非你遇到性能问题,并且已经发现这是瓶颈,否则我认为不值得担心. (2认同)

Øys*_*sen 25

你要反序列化多少个对象?除非empty(get_object_vars($object))或投射阵列被证明是一个主要的减速/瓶颈,我不会担心 - 格雷格的解决方案就好了.

我建议$associative在解码JSON数据时使用该标志,但是:

json_decode($data, true)
Run Code Online (Sandbox Code Playgroud)

这将JSON对象解码为普通的旧PHP数组而不是stdClass对象.然后你可以检查空对象使用empty()并创建用户定义类的对象而不是使用stdClass,从长远来看这可能是一个好主意.