2014-09-10 4 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

+0

foreach ($ location_total_n_4 as $ u => $ v) { $ final_location_total_4. = "[". $ U. ",". $ V. "],"; } Я отправляю эти значения в json. echo json_encode (массив ( "location" => "$ final_location_total_4" )); –

+1

@ Mr7-itsurdeveloper Итак, вы добавляете двойные кавычки в PHP и хотите удалить его с помощью jQuery? Какая польза от цикла foreach? Просто удалите этот цикл: '' json_encode (array ("location" => $ location_total_n_4)); '' –

ответ

3

Проблема в том, что ваше значение location неверно сериализовано. Это определенно целесообразно исправить на стороне сервера (похоже, что вы пытаетесь реализовать свой собственный json_encode и сбой), но его также можно исправить на стороне клиента. Один возможный подход:

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

Demo. slice(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 [] –

+0

aina77ow Позвольте мне проверить ваш обновленный ответ –

+0

по-прежнему пустой, результат пуст в консоли ==> Массив [] –

0

В конце есть конечная запятая (,) So json.parse будет вызывать ошибку, поэтому нам нужно ее удалить.

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

Тогда Ь становится

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

без задней запятой.

+0

ломтик как в принятом ответе намного шире – mplungjan

Смежные вопросы