【发布时间】:2014-01-28 01:35:51
【问题描述】:
我的应用程序需要生成一个对象的 json,该对象具有数组类型的大型 data 属性。数组在收集 DB 输出时需要保留在内存中,并且只有在数组完成后才能确定某些属性。
复杂性:数组是基于数字的,必须在 json 输出中显示,因此直接json_encode() 不是一个选项。
为了在 RasPi 等低规格机器上实现这一点,我研究了减少内存消耗:
- 使用
SPLFixedArray - 使用
string和pack()
这两种方法都解决了数组存储内存问题,但在 JSON 编码时都失败了。
我已经研究过实现JsonSerializable,但因为它强制用户返回结果,然后用 Json 编码,所以我回到了
public function jsonSerialize() {
return $this->toArray();
}
有同样的内存问题。
zendframework/Component_ZendJson 看起来很有希望,因为它寻找具有toJson() 方法的对象,以提供自己的编码为string而不是object。
我想知道是否有更好的选项不会出现内存问题?
【问题讨论】:
-
我确信您所做的事情超出了我的想象,但 PHP 本身就有 json_encode。如果它不适用,那么我可以删除此评论 =)
-
好收获。当然有一个原因我忘了说。真可惜。复杂性:数组是基于数字的,并且必须在 json 输出中显示,因此直接
json_encode()不是一个选项。 -
@MikeB:需要相反的方式-强制它为数组而不是对象。
标签: php arrays json zend-framework spl