gpt4 book ai didi

php json编码大数组被截断

转载 作者:行者123 更新时间:2023-12-05 03:14:09 27 4
gpt4 key购买 nike

我在使用 json_encode 显示 json 时遇到问题。问题是它在某个点后被截断了。我猜大约有 2500 行。我在 stackoverflow 和其他建议增加内存限制的问题中阅读了很多问答。我已经增加到32m而且它仍然被截断而且我不认为这是问题,因为我已经回应了内存使用情况并且 true 我得到 3.5mb 而 false 我得到 1.5mb 我也尝试将它编码为 1000 但直到某个点它仍然截断。

我的 json 看起来像这样

{"Id":"1"},{"Words":""},{"Position":"0"},{"Length":"0"},{"Pdf_Id":"1"

还有2000个

我的代码是这样的:

json文件

echo json_encode(array_values($db->getallqueryjsoncountStart("words_table","Allwords",4000,0)));


public function getallqueryjsoncountStart($table,$jsonparentname,$count,$start)
{

$this->sqlquery = "select * from $table LIMIT $start,$count";
$this->stmt = $this->conn->query($this->sqlquery);
for ($i = 0; $i < $this->stmt->columnCount(); $i++) {
$col = $this->stmt->getColumnMeta($i);
$columns[] = $col['name'];
}
$this->initcnt = 0;
$getqueryJson = array();

while($this->row = $this->stmt->fetch())
{
for($x = 0;$x < sizeof($columns);$x++)
{
$getqueryJson[][$columns[$x]] = $this->row[$columns[$x]];
}
}
return $getqueryJson;
}

最佳答案

如果“Words”列实际上包含一些文本,则该值中可能包含一些非法字符。

将以下选项添加到 json_encode 函数:

JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP

有关每个功能的描述,请参阅 manual page

还有。看起来您构造 $getqueryJson 数组的方式不正确。尝试如下更改

$getqueryJson = array();
while($this->row = $this->stmt->fetch())
{
$row = array()
for($x = 0;$x < count($columns);$x++)
{
$row[$columns[$x]] = $this->row[$columns[$x]];
}
$getqueryJson[] = $row;
}
return $getqueryJson;

像这样调用方法。

$table_data = $db->getallqueryjsoncountStart("words_table","Allwords",4000,0);
echo json_encode($table_data,
JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP);

这将生成具有以下格式的 JSON 字符串。

[{"Id":"1", "words":"", "Position":"0","Length":"0","Pdf_Id":"1"},
{"Id":"2", "words":"", "Position":"0","Length":"0","Pdf_Id":"2"},
{"Id":"3", "words":"", "Position":"0","Length":"0","Pdf_Id":"3"},
...
{"Id":"4000", "words":"", "Position":"0","Length":"0","Pdf_Id":"4000"}]

如果问题仍然存在,请尝试调用 json_last_error()在调用 json_encode 之后。

关于php json编码大数组被截断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26698623/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com