我有一个名为resul
的字符串数组,我想将其转换为JSON。我尝试了两种方法来实现它。
第一个我使用以下命令:
$this -> resul = json_encode(utf8_encode($this -> sqry -> fetchAll(PDO::FETCH_ASSOC)));
但我有警告:
警告:utf8_encode()要求参数1为字符串,给定数组为
所以我知道我必须将这个数组转换成字符串。这是实现目标的第二种方式。那是我使用的代码:
$this -> resul = $this -> sqry -> fetchAll();
for($i=0;$i<count($this -> resul);$i++)
{
$this -> fresul = $this -> fresul . $this -> resul[$i]["nombre"];
$this -> fresul = $this -> fresul . $this -> resul[$i]["descripcion"];
$this -> fresul = $this -> fresul . $this -> resul[$i]["precio"];
$this -> fresul = $this -> fresul . $this -> resul[$i]["foto"];
}
$this -> fresul = utf8_encode($this -> fresul);
header('Content-type: application/json');
echo "</br>" . json_encode($this -> fresul);
fresul
是数组resul
的字符串。运行脚本后,我收到错误:
SyntaxError:JSON.parse:第1行第1列的意外字符 JSON数据
但是如果我删除标题我只有一个字符串,但没有错误或警告。
如何将此数组转换为JSON?
感谢。
答案 0 :(得分:0)
如果您的数据库未返回UTF-8编码文本,请调整数据库以返回UTF-8编码文本。那你就不需要utf8_encode
。事实上,每当你想要使用utf8_encode
时,就会发现你的编码处理出现了其他问题。
对于PDO:
// somewhere:
$this->db = new PDO('mysql:...;charset=utf8mb4');
// then:
$this->resul = json_encode($this->sqry->fetchAll(PDO::FETCH_ASSOC));
Etvoilà,数据库返回UTF-8编码数据,可以直接进行JSON编码。