一尘不染

用PHP在JSON中创建空对象的最佳方法?

php

要创建一个空的JSON对象,我通常使用:

json_encode((object) null);

将null强制转换为对象有效,但是此解决方案是否还有其他更好的方法和/或任何问题?


阅读 308

收藏
2020-05-29

共1个答案

一尘不染

您的解决方案可以工作。

该文档指定(object) null将导致一个空的对象,因此可能有人说您的代码有效,这是使用的方法。

PHP:对象-手册

如果将任何其他类型的值转换为对象,则将创建stdClass内置类的新实例。如果值为NULL,则新实例将为空。


..但是,请尝试确保其安全!

尽管您永远都不知道上面的内容何时/是否会更改,因此,如果您想100%地确定自己总是会以{}编码数据结尾,则可以使用以下方法:

json_encode (json_decode ("{}"));

即使这很繁琐又丑陋,我还是假设/希望json_encode / json_decode与彼此兼容,并且总是将以下内容评估为真:

$a = <something>;

$a === json_decode (json_encode ($a));

推荐方法

json_decode ("{}")将返回stdClass默认值,因此应将以下内容视为安全方法。但是,正如所提到的,它几乎和做相同(object) null

json_encode (new stdClass);
2020-05-29