删除JSON结果中的双引号?

时间:2014-09-10 08:09:20

标签: php jquery json

我的代码如下

foreach($location_total_n_4 as $u=> $v) {    
  $final_location_total_4 .= "[".$u.",".$v."],"; 
}    

我将这些值作为JSON发送。

echo json_encode(array("location"=>"$final_location_total_4" ));

以下是response对象的外观:

{
  "location": "[1407110400000,6641],[1407196800000,1566],[1407283200000,3614],"‌​
}

我正在用ajax创建成功图表。所以我需要这样,

  {
      "location": [1407110400000,6641],[1407196800000,1566],[1407283200000,3614],
    }

任何人都可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:3)

问题是您的location值是非正确序列化的值。它绝对适合修复服务器端(看起来像是试图实现自己的json_encode并失败),但它也可以修复客户端。一种可能的方法:

var location = JSON.parse('[' + response.location.slice(0,-1) + ']');

Demoslice(0,-1)删除尾随逗号,然后将内容包装到括号中,将它们转换为适当的JSON(至少对于给定的数据集)。


至于服务器端,原来我是对的:这段代码......

foreach($location_total_n_4 as $u=> $v) { 
  $final_location_total_4 .= "[".$u.",".$v."],"; 
}
echo json_encode(array('location' => "$final_location_total_4"));

...在战术上(总是添加一个尾随的逗号)和战略上是错误的(一个人不应该解决语言本身已经解决的任务)。一个可能的替代品:

$locations = array();
foreach ($location_total_n_4 as $u => $v) {
  $locations[] = array($u, $v);
}
echo json_encode(array('location' => $locations));

底线:永远不要尝试实施自己的序列化协议,除非您真的知道自己在做什么。

答案 1 :(得分:0)

最后有一个逗号(,),所以json.parse会抛出错误,所以我们需要删除它。

     b = JSON.parse("["+ data[0].substr(0,data[0].length-1) +"]");

然后b成为

     [[1407110400000,6641],[1407196800000,1566],[1407283200000,3614],[1407369600000,3654],[1407456000000,2918],[1407715200000,3900]]

没有逗号。