繁体   English   中英

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

[英]How can I parse a JSON object containing a PHP array of objects?

我创建了一个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是我要解析的数组。

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

更新: 这是JSON字符串

我正在尝试从JavaScript访问它们。

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

Uncaught SyntaxError: Unexpected end of input

更新3:我刚刚检查了Firebug,它似乎只将它作为JSON响应文本返回:

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

我假设您要通过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)

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

var respObj = jQuery.parseJSON(response);

JSON是有效的javascript,因此最直接的解决方案(假设您相信json的来源为100%)是简单地eval()即可。

var response = eval(the_json);

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

如果您使用的是jQuery之类的库,则可以使用内置方法更安全地评估json字符串。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM