我正在做一项学校作业,我必须将 Twitter 转储作为 SQL 并将其另存为 JSON(用于 D3)。但是,我在 JSON 编码方面遇到了一些问题。我能够正常获取日期、用户、转发、收藏夹,但由于某种原因,推文的实际文本仅编码为“文本”。我检查了表格,上面的所有内容看起来都是正确的,但由于某种原因,我的编码器没有正确编码文本。以下是我必须将 Twitter SQL 表编码为 JSON 的代码:
<?php
$dsn = 'mysql:host=localhost;dbname=twitter';
define('MYSQL_USER','root');
define('MYSQL_PASS','dismypassword');
$tweets = "SELECT `id`,`date`,`screen_name`,`favorite_count`,`favorited`,'text' as 'textThing' FROM tweets";
$sql = $tweets;
header("Content-Type: application/json");
try {
$db = new PDO($dsn, MYSQL_USER, MYSQL_PASS);
$statement = $db->prepare($sql);
$statement->execute();
$data = array();
while ( ($row = $statement->fetch(PDO::FETCH_ASSOC)) ) {
$data[] = $row;
}
echo json_encode($data);
} catch (PDOException $e) {
die('Query failed: ' . $e->getMessage());
}
?>
此操作的输出将生成一个如下所示的 JSON 文件(其中文本简单地显示为“文本”:
[
{
id: "704419321326510080",
date: "2016-02-29 22:33:48",
screen_name: "cscstars",
favorite_count: "0",
favorited: "0",
textThing: "text"
},
{
id: "704419329287331840",
date: "2016-02-29 22:33:50",
screen_name: "Wary12",
favorite_count: "0",
favorited: "0",
textThing: "text"
},
{
id: "704419365588865024",
date: "2016-02-29 22:33:58",
screen_name: "lgib15",
favorite_count: "0",
favorited: "0",
textThing: "text"
},
{
id: "704419366243151874",
date: "2016-02-29 22:33:59",
screen_name: "jacqui4peace",
favorite_count: "0",
favorited: "0",
textThing: "text"
},
最佳答案
我找到了问题的根源。导致函数失败的根本不是 JSON 编码器,而是推文文本中的特殊字符。在我清理 tweet sql 表后,该函数完美运行。
关于php - SQL 表中的 JSON 编码 -> JSON 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35857660/