json字符串未转换为对象

时间:2015-02-20 16:26:54

标签: javascript php jquery json

这是服务器端代码我正在尝试发送json

$x = array();
$timestamp = strtotime('22-09-2008'); 
$x["x"] = $timestamp;
$x["y"] = 22;

$val = '[{ "name": "weight", "dataPoints": ['.json_encode($x).'] }]';
echo json_encode($val);

因此上面代码的输出看起来像

   "[{ \"name\": \"weight\", \"dataPoints\": [{\"x\":1222041600,\"y\":22}] }]"

以下是客户端代码我通过Jquery getJSON获取数据

var jqxhr = $.getJSON( "https://domain/gettracker.php?id="+id, function(data) {

 console.log(data);

})

我想getJson会自动将json转换为对象,但它会记录下面的原始json

"[ {  name: "weight", dataPoints: [{"x":1222041600,"y":22}] } ]"

我试着做json解析,但是我收到了错误。

我想我不是通过php正确发送数据。有人可以指导我吗?

1 个答案:

答案 0 :(得分:3)

您的JSON字符串无效 - 属性名称应该用双引号括起来 - ",并且您不需要再次对字符串进行编码。

$val = '[{ "name": "weight", "dataPoints": ['.json_encode($x).'] }]';
echo $val;

或者更好的是,使用json_encode为您创建字符串:

$data = array(
    'name' => 'weight',
    'dataPoints' => $x
);

echo json_encode($data);