2012-12-08 102 views
0

我有JSON返回字符串而不是对象

$age = implode(',', $wage); // which is object return: [1,4],[7,11],[15,11] 
    $ww = json_encode($age); 

,然后我在这里找回

var age = JSON.parse(<?php echo json_encode($ww); ?>); 

所以,如果我做

alert(typeof(<?php echo $age; ?>)) // object 
    alert(typeof(age))     //string 

在我的情况JSON.parse重新调整为串。

我该如何让json作为对象返回?

编辑:

var age = JSON.parse(<?php echo $ww; ?>); // didnt work , its something syntax error 
+0

'$ WW = json_encode($岁)'然后你回声'json_encode($ WW);'所以真的'VAR年龄= JSON.parse(这是你真正想做什么吗? – Popnoodles

+0

为什么你使用json_encode两次?第二次你基本上在一个字符串上运行json_encode,这是没有道理的,因为json_encode运行在数组\对象上并转向他们到字符串 – Matanya

+0

我编辑我的帖子,因为你告诉我@Matanya –

回答

1
var age = [<?php echo $age; ?>]; 
2

implode返回字符串,所以它是很自然的json_encode编码它本身。它不能识别已经作为字符串传递的类JSON数据。

如果你想获得一个对象,你有关联数组传递给json_encode

$foo = array(
    1 => 4, 
    7 => 11, 
    15 => 11 
); 

echo json_encode($foo); // {1:4,7:11,15:11} 

用什么$wage看起来像它的崩盘之前这么少的信息,这是很难告诉你想要什么要得到。这个结构怎么样([1,4],[7,11],[15,11])是一个对象?每个元组的第一个元素是关键吗?这就是我用我的例子所假设的,但它可能是关闭的。

+0

但为什么类型的$年龄是对象和年龄的类型是我的代码中的字符串 –

+0

@peter,你必须看看这生成的代码。数组中的typeof([1,4],[7,11],[15,11])和'typeof'返回'object'(简单地说,'typeof'返回最后一个逗号的类型'它作为参数接收的分隔值)。在第二种情况下,你会得到'typeof(“[1,4],[7,11],[15,11]”)',这肯定是一个'string'字面值(注意引号)。 – zneak

+0

我没有使用双引号“typeof(”[1,4],[7,11],[15,11]“)' –

1

a。你得到一个语法错误,因为你需要引号内的字符串,像这样:

var age = JSON.parse("<?php echo $ww; ?>");

湾此外,你不需要JSON.parse。你可以简单地附和PHP VAR后,这是在服务器端已经json_encoded:

var age = <?php echo $ww; ?>;

JSON.parse有一个的JavaScript字符串转换为对象。在PHP字符串的情况下,一旦它被构建为JSON,在正确的地方回显它相当于自己编码。

+0

首先,我不知道我在哪里写过双引号,因为你提到过 –

+0

一个。你没有。你应该有。湾正如我所说,这是多余的 – Matanya

+0

b变量年龄也是没有json解析的字符串 –

相关问题