2013-02-21 299 views
2

我有这个我在Firebug的控制台上,将JSON对象转换为数组?

[Object { fa_id="1167535", f_id="1000", loc_type="6", more...}, Object { fa_id="1167535", f_id="1000", loc_type="6", more...}] 

它是从服务器端的数据。现在,我将如何将其转换为数组,以便这些数据可以在另一个文件上使用。我试过JSON.parsejQuery.parseJSON,但都没有奏效。

+3

你的标签稍微混淆问题。你想用JavaScript还是PHP把它变成一个数组? – BenM 2013-02-21 18:44:20

+0

再次令人困惑.. JavaScript或PHP? – 2013-02-21 18:48:31

+0

您没有JSON。 JSON是数据的*字符串表示形式,恰好可以与JavaScript共享语法。你有一组对象,你想用它做什么? – 2013-02-21 18:48:46

回答

5

这不是JSON,它是一个对象的Javascript数组,而不是一个字符串。我的猜测是,你已经从jQuery ajax调用中收到了这个消息,并且设置了dataType : 'json'集,以便jQuery自动将JSON解析到此数组中。

使用它发送到PHP脚本,你可以将其转换回JSON:

var myString = JSON.stringify(data); 

,然后火了一个AJAX调用PHP脚本与作为POST数据:

var myString = JSON.stringify(data); 
$.post('page.php', { data : myString }, function(){ 
    console.log("sent"); 
}); 

在PHP中,你可以使用其解码:

$data = json_decode($_POST['data']); // <-- or whatever your post variable is named 

foreach($data as $obj) 
{ 
    echo $obj->fa_id; 
} 
+0

其实你是对的。那么我怎么才能把它变成PHP中的一个对象数组呢? – 2013-02-21 18:50:20

+0

@CHiRiLo看我的编辑。基本上你可以将它转换回字符串,然后将其转换为PHP,然后在PHP端进行解码。 – MrCode 2013-02-21 18:54:30

+0

您可以放弃'JSON.stringify',只需执行'$ .post('page.php',{data:data})''。 '$ _POST ['data']'然后就是一个数组数组。 – 2013-02-21 18:59:30

0

您提供的字符串不是有效的JSON。

[Object { fa_id="1167535", f_id="1000", loc_type="6", more...}, 
Object { fa_id="1167535", f_id="1000", loc_type="6", more...}] 

特别地,“Object”和“more...”字符串不能被一个JSON解析器解释。

假设你正在检查的对象是一个变量命名foo

console.log(JSON.stringify(foo)); 

如果打印对象的有效JSON表示给Javascript控制台。