Php:如何在生成json_encode后立即回显它

时间:2014-08-01 16:07:32

标签: php performance serialization json

对于rest API,我需要序列化大型和深度嵌套的json对象;

是否有一种方法可以在生成时回显json

如果我回显json_encode($var),它将生成整个json,然后吐出来:它耗费内存,我必须等待整整一代完成,然后我开始在浏览器中看到一些响应。

有没有办法强迫json_decode出现这种行为?

或者是否有可以执行此类操作的库?

2 个答案:

答案 0 :(得分:0)

您唯一的选择是迭代您正在编码的对象并逐项编码,可能编写您自己的json表示法以包含生成的json。

例如

echo "["; // or { for an associative array (don't forget to output the json_encode()d keys and their colons)
$first = true;
for ($i = 0; $i < 10000000; $i++) {
    // json does not support trailing commas like php does
    // and you can't do an implode(",", $array) here because of the memory usage
    if ($first) {
        $first = false;
    } else {
        echo ",";
    }
    echo json_encode($i);
}
echo "]"; // or }

取自这里: http://forums.phpfreaks.com/topic/288266-json-encode-exceeds-allowed-memory/

答案 1 :(得分:-2)

您可以使用智能模板将json从磁盘读取文件。 或者您可以查看https://stackoverflow.com/a/4820537/3900160