解析 JSON 对象以发布
Posted
技术标签:
【中文标题】解析 JSON 对象以发布【英文标题】:Parsing JSON objects to post 【发布时间】:2015-05-14 03:13:36 【问题描述】:我正在学习构建一个简单的 API,我有以下代码创建以下 json:
代码:
$sql = "SELECT * FROM posts WHERE `user_id` = '$user_id' AND post_date > CURDATE() - INTERVAL 2 YEAR ORDER BY post_date DESC ";
$result = $dbc->query($sql);
$rows = array();
while ($row = mysqli_fetch_array($result))
$rows["posts"][$row['post_date']] = $row['post_content'];
echo json_encode($rows);
JSON 创建:
"posts":"2015-03-03":"33","2014-03-03":"33 33"
如何解析这个?我知道下面的代码是一个好的开始,但还没有成功:
$.ajax(
url : "http://localhost:8888/290_project/api_write.php",
dataType: 'json',
type: 'get',
cache: false,
success : function(data)
);
也许我应该在这个 w3 学校的例子中做一些类似的事情?
var text = '"employees":[' +
'"firstName":"John","lastName":"Doe" ,' +
'"firstName":"Anna","lastName":"Smith" ,' +
'"firstName":"Peter","lastName":"Jones" ]';
obj = JSON.parse(text);
document.getElementById("demo").innerhtml =
obj.employees[1].firstName + " " + obj.employees[1].lastName;
虽然到目前为止我还没有运气,但我知道我已经很接近了!
【问题讨论】:
【参考方案1】:如果你使用它,你实际上甚至不需要解析它
$.getJSON('http://localhost:8888/290_project/api_write.php', function(alreadyParsedJsonData)
// do stuff
);
【讨论】:
【参考方案2】:为了有一个更清晰的交互界面,您可以考虑更改脚本以更易于使用的形式返回数据:
while ($row = mysqli_fetch_array($result))
$post = array();
$post['date'] = $row['post_date'];
$post['content'] = $row['post_content'];
$rows["posts"][] = $post;
在您的成功函数中,您可以访问作为 javascript 对象的数据
success : function(data)
alert(data.posts[0].date);
alert(data.posts[0].content);
您可以在此处以任何您喜欢的方式操作这些数据,而无需对其进行解析。
【讨论】:
这给了我 [object Object],如果我运行:alert(data.posts[0]);我预计“2015-03-03”但未定义。我将如何从那里操纵以获得我想要的东西?这就是我不断遇到障碍的地方。 'posts' 不是数组,因此 posts[0] 将返回未定义。也许您实际上希望您的 PHP 脚本返回一个 JSON 数组作为帖子的值:"posts":["date" : "2015-03-03", "post_content" : "33","date" : "2014-03-03", "post_content" : "33 33"]
。然后您可以访问每个帖子,例如data.posts[0].date
等。
所以我需要重组: $rows["posts"][$row['post_date']] = $row['post_content']; ?
$rows["posts"]["date"][$row['post_date']] = $row['post_content'];这似乎是正确的方向,但我没有得到我需要的东西。
非常感谢!我已经为此工作了几天,学到了很多东西!【参考方案3】:
我认为$.parseJSON
是您的解决方案。您可以在成功事件中这样做:
$.ajax(
url : "http://localhost:8888/290_project/api_write.php",
dataType: 'json',
type: 'get',
cache: false,
success : function(data)
var data = $.parseJSON(data);
console.log(data);
);
【讨论】:
似乎它应该可以工作,但我得到 Uncaught SyntaxError: Unexpected token o以上是关于解析 JSON 对象以发布的主要内容,如果未能解决你的问题,请参考以下文章
在 Swift 3.0 中访问从 iTunes API 解析的 JSON 对象