【问题标题】:Remove double quotes in JSON result?删除 JSON 结果中的双引号?
【发布时间】:2014-11-03 19:15:42
【问题描述】:

我的代码如下

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],
    }

谁能帮我解决这个问题?

【问题讨论】:

  • 你从哪里得到这个回复?如果是您的代码返回它 - 为什么不直接生成它呢?
  • foreach($location_total_n_4 as $u=> $v) { $final_location_total_4 .= "[".$u.",".$v."],";我在 json 中发送这些值。 echo json_encode(array("location"=>"$final_location_total_4"));
  • @Mr7-itsurdeveloper 所以你在 PHP 中添加双引号,你想用 jQuery 删除它? foreach 循环有什么用?只需删除该循环:json_encode(array("location"=> $location_total_n_4));
  • @StephanVierkant 想法相同,但 OP 想要使用的结构有点不同。
  • 条目太多了,我把它和时间结合起来 $location_total_n_4=array_combine($date_d_4,$location_total_4); foreach($location_total_n_4 as $u=> $v) { $final_location_total_4 .= "[".$u.",".$v."],"; }

标签: php jquery json


【解决方案1】:

问题是您的 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));

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

【讨论】:

  • 控制台中的结果为空白 ==>Array [ ]
  • 还是空白,控制台结果为空白 ==>Array [ ]
  • console.log(typeof response.location) 返回什么?
  • 工作,刚刚从您的代码中删除 [0] var res = JSON.parse("[" + response.location.slice(0,-1) + "]");
【解决方案2】:

末尾有一个逗号(,)所以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]]

没有尾随逗号。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-15
    • 1970-01-01
    • 1970-01-01
    • 2013-09-09
    • 1970-01-01
    相关资源
    最近更新 更多