如何解析包含PHP对象数组的JSON对象?

时间:2012-01-23 02:16:28

标签: php javascript ajax json parsing

我创建了一个与分页链接一起使用的AJAX函数,可以动态加载新的帖子页面,并且除了我无法弄清楚如何解析像这样的JSON对象之外,一切都运行良好。

这是以JSON格式传递的PHP样式:

Array (
    [0] => stdClass Object (
        ['var1'] => val1
        ['var2'] => var2
    )
    [1] => stdClass Object (
        ['var1'] => val1
        ['var2'] => var2
    )
    [3] => stdClass Object (
        ['var1'] => val1
        ['var2'] => var2
    )
)

正在传递给它:

$response = json_encode( array( 'success' => true, 'posts' => $new_posts ) );

$new_posts是我正在尝试解析的数组。

有人能告诉我如何访问这些变量及其值吗?感谢。

更新: Here's the JSON string

我正在尝试从JavaScript访问这些内容。

更新2 :当我使用var posts = JSON.parse( response.posts );时,我在Google Chrome Javascript控制台中收到以下错误:

Uncaught SyntaxError: Unexpected end of input

更新3:我刚检查过Firebug,它似乎只是为JSON响应文本返回此内容:

{"success":true,"posts":[]}

3 个答案:

答案 0 :(得分:2)

我假设你想通过JavaScript访问,因为你在PHP中有这个。在XHR成功回调中,将响应插入JSON.parse();并按如下方式访问所有内容

var data = JSON.parse(recievedData); // newer browsers, optionally you can use jQuery or eval()
console.log(data); // test;
// loop through all data
for(var i=0;i<data.length;++i) {
   console.log(data[i].var1); // expects val1
   console.log(data[i].var2); // expects val2
}
//access one bit
console.log(data[0].var1);

jQuery响应方法(有很多方法可以实现这一点)

var data = jQuery.parseJSON(recievedData)

答案 1 :(得分:1)

由于您使用的是jQuery,最好的方法是使用parseJSON方法:

var respObj = jQuery.parseJSON(response);

答案 2 :(得分:0)

JSON是有效的javascript,所以最直接的解决方案(假设您信任json 100%的来源)就是简单地eval()它。

var response = eval(the_json);

if (response.success){
    var posts = response.posts
}

如果您正在使用像jQuery这样的库,那么有一些内置方法可以更安全地评估json字符串。