将 JSON 个对象解析为 post

Parsing JSON objects to post

我正在学习构建一个简单的 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;

虽然到目前为止我还没有运气,但我知道我已经很接近了!

为了有一个更清晰的交互界面,您可以考虑将脚本更改为 return 更易于使用的数据形式:

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);
}

您可以在此处以任何您喜欢的方式操作这些数据,而无需对其进行解析。

我认为 $.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);

    }
});

如果你使用

实际上你甚至不需要解析它
$.getJSON('http://localhost:8888/290_project/api_write.php', function(alreadyParsedJsonData) {
  // do stuff
});