Я пытаюсь отобразить данные для плагина с предопределенным форматом json, но после попытки данные не соответствуют формату, в чем проблема?
Требуется JSON
[
{
latLng: [-6.17343444,1206.834234294],
name: 'XY'
},
{
latLng: [-6.1742343244,106.898987294],
name: 'XK'
}
]
Результат мой JSON
[
{
"latLng": "-6.17343444,1206.834234294",
"name": "XK"
},
{
"latLng": "-6.1742343244,106.898987294",
"name": "XY"
}
]
myscript PHP
public function lat_lang() {
foreach($this->model->name_model() as $row){
$data[] = array(
'latLng' => $row->lat_long,
'name' => $row->city
);
}
header('content-type: application/json');
echo json_encode($data);
}
вызов JSON
$.parseJSON('<?php echo base_url().'mycontrollers';?>', function(datas) {
console.info(datas);
});






Вы можете использовать explode() для преобразования строки "-6.17343444,1206.834234294" в массив [-6.17343444,1206.834234294]:
public function lat_lang() {
foreach($this->model->name_model() as $row){
$data[] = array(
'latLng' => explode(',',$row->lat_long),
'name' => $row->city
);
}
header('content-type: application/json');
echo json_encode($data);
}
Если вы хотите получить числа с плавающей запятой (для всех значений в JSON), вы можете использовать JSON_NUMERIC_CHECK:
json_encode($data, JSON_NUMERIC_CHECK);
Или просто для определенного значения:
$latLng = explode(',', $row->lat_long);
$latLng = array_map('floatval', $latLng);
$data[] = array(
'latLng' => $latLng,
'name' => $row->city
);
@irwandwiyanto Можно попробовать json_encode($data, JSON_NUMERIC_CHECK);
@irwandwiyanto Я обновил ответ другим способом принудительного значения с плавающей запятой.
спасибо, @Syscall спасибо, все еще без изменений, все еще есть цитаты по json result
"latLng": ["-6.17343444", "1206.834234294"]