это простой вопрос. Я пытаюсь использовать библиотеку в реальном времени листовки, но для ее загрузки требуется конкретный вывод JSON, такой как:
data: {"type":"Feature","geometry":{"type":"Point","coordinates":[-85.26995166666667,35.056891]},"properties":{"color":"#FFFFFF","route":"U"},"id":"118"}
пока это все, что я получил:
[{"type":"Feature","coordinates":["-34.66159","-59.42428"],"color":"#FFFFFF","route":"u", id:118}]
это мой PHP
$id=$row['id']; $type=$row['type']; $lat=$row['lat']; $lng=$row['lng']; $color=$row['color']; $route=$row['route']; $data [] = array('id'=> $id, 'type'=> $type,'coordinates'=> $lnglat = array ($lat, $lng), 'colour'=> $colour, 'route'=> $route); $json_string = json_encode($data); echo $json_string;
Это сводит с ума … Я все пробовал .. Я читал много учебников json_encode … но я не могу найти пример или такую ситуацию, как моя.
Пожалуйста помоги!
Спасибо!
Попробуйте декодировать json
вам нужно создать, чтобы посмотреть, как выглядит структура данных PHP
:
$json='{"type":"Feature","geometry":{"type":"Point","coordinates":[-85.26995166666667,35.056891]},"properties":{"color":"#FFFFFF","route":"U"},"id":"118"}'; $data = json_decode($json, TRUE); print_r($data);
Выход:
Array ( [type] => Feature [geometry] => Array ( [type] => Point [coordinates] => Array ( [0] => -85.269951666667 [1] => 35.056891 ) ) [properties] => Array ( [color] => #FFFFFF [route] => U ) [id] => 118 )
Теперь ваш код должен выглядеть так:
$data = array( 'type' => $type, 'geometry' => array( 'type' => 'Point', 'coordinates' => array($lat, $lng), ), 'properties' => array( 'color' => $color, 'route' => $route, ), 'id' => $id, ); echo(json_encode($data));
UPDATE: как замечает @ paul-crovella в комментарии, используя var_export()
вместо print_r()
в первом фрагменте кода производит непосредственно PHP-код, очень похожий на тот, который отображается выше (за исключением переменных / значений), который может быть скопирован -pasted в ваш код и используется путем замены значений ( 'Features'
, 35.056891
, '#FFFFFF'
aso) с соответствующими переменными ( $type
, $lng
, $color
т. д.).
Вы можете попробовать следующее:
$id = 1; $type = "type"; $lat = 42.565; $lng = 19.6464; $colour = "Color"; $route = "Route"; $data = array('id' => $id, 'type' => $type, 'coordinates' => $lnglat = array($lat, $lng), 'colour' => $colour, 'route' => $route); $json_string = json_encode(array('data' => $data)); echo $json_string;
Удалите []
из $data
.
Выход:
{"data":{"id":1,"type":"type","coordinates":[42.565,19.6464],"colour":"Color","route":"Route"}}
Это будет работать для вас:
$dataArray = array('id'=> $id, 'type'=> $type,'coordinates'=> $lnglat = array ($lat, $lng), 'colour'=> $colour, 'route'=> $route); $json_string = json_encode(array('data'=>$dataArray)); echo $json_string;
Ваше назначение массиву $data
должно выглядеть следующим образом:
$data['data'] = array( 'id' => $id, 'type' => $type, 'coordinates' => $lnglat = array($lat, $lng), 'colour' => $color, 'route' => $route );
PS У вас также была опечатка в переменной $color
.
Вы пробовали это:
$id=$row['id']; $type=$row['type']; $lat=$row['lat']; $lng=$row['lng']; $color=$row['color']; $route=$row['route']; $data [] = array('id'=> $id, 'type'=> $type,'coordinates'=> $lnglat = array ($lat, $lng), 'colour'=> $colour, 'route'=> $route); $json_string = json_encode(array('data'=>$data)); echo $json_string;
Все, что я сделал, это добавить еще один уровень в array()
:
$json_string = json_encode($data);
В этом:
$json_string = json_encode(array('data'=>$data));
$data['data'] = array('id'=> $id, 'type'=> $type,'coordinates'=> $lnglat = array ($lat, $lng), 'colour'=> $colour, 'route'=> $route); $json_string = json_encode($data); echo $json_string;
ИЛИ
$data = array('id'=> $id, 'type'=> $type,'coordinates'=> $lnglat = array ($lat, $lng), 'colour'=> $colour, 'route'=> $route); $json_string = json_encode(array('data'=>$data)); echo $json_string;