У меня была эта строка:
{\"lat\":37.790388261934424,\"lng\":-122.46047996826172},{\"lat\":37.789608231530124,\"lng\":-122.46344112701416}
Затем, благодаря помощи StackOverflowers, я сделал это, чтобы удалить косые черты:
$markers = stripslashes($markers);
Затем я попытался добавить внешние скобки, которые, по-видимому, необходимы для функции декодирования
$markers = json_decode('['.$markers.']');
Это был правильный путь? Затем я попытался сделать это:
foreach($markers as $key => $value) { $some_string = $some_string.' ( '.$value.' ) '; }
Какая игра мне эта ошибка:
Object of class stdClass could not be converted to string
Но мне действительно нужно извлечь значения lat / lng в переменные $ lat, $ lng. Может ли кто-нибудь предложить мне, как исправить ошибку, которую я получаю, и поместить значения в переменные?
Спасибо, Алекс
Пытаться…
foreach($markers as $marker) { $some_string .= '('.$marker->lat.','.$marker->lng.')'; }
Результат …
(37.7903882619,-122.460479968)(37.7896082315,-122.463441127)
foreach($markers as $key => $value) { // $value is object with lat and lng properties $some_string = $some_string.' ( lat:'.$value->lat.' ) '; }
Это тоже меня озадачило, почему json_decode () возвращает данные, инкапсулированные в объекты?
Оказывается, все массивы в Javascript считаются объектами, поэтому json_decode () возвращает их как объекты PHP stdClass. Попробуйте сделать print_r () на марке $, чтобы увидеть, как он структурирован.
Это работает
var json = JSON.parse(<?php echo "'" . stripslashes($_POST['json']) . "'" ?>);