2014-09-10 123 views
-2

我的代碼如下刪除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.so我需要它這樣,

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

誰能幫我解決這個?

+2

你從哪裏得到這個迴應?如果它是你的代碼返回它 - 爲什麼不恰當地生成它呢? – zerkms 2014-09-10 08:11:16

+0

foreach($ location_total_n_4 as $ u => $ v) { $ final_location_total_4。=「[」。$ u。「,」。$ v。「],」; } 我發送這些值在json中。 echo json_encode(array( 「location」=>「$ final_location_total_4」 )); – 2014-09-10 08:18:32

+1

@ Mr7-itsurdeveloper所以你在PHP中添加雙引號,你想用jQuery刪除它? foreach循環有什麼用處?只需刪除該循環:''json_encode(array(「location」=> $ location_total_n_4)); '' – 2014-09-10 08:21:29

回答

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)); 

底線:永遠不要企圖實現自己的序列化協議,除非你真的知道你幹嘛呢。

+0

結果在控制檯中爲空==> Array [] – 2014-09-10 08:23:39

+0

aina77ow讓我檢查您的更新答案 – 2014-09-10 08:24:10

+0

仍然爲空,結果在控制檯中爲空==> Array [] – 2014-09-10 08:27:47

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

沒有後面的逗號。

+0

切片在接受的答案是更加優雅 – mplungjan 2014-09-10 09:13:10