двойные квоты появляются после вывода JSON в массиве PHP в JSON

Я прочитал ответ на вопрос в

PHP Array для JSON, как избавиться от некоторых двойных кавычек?

У меня та же проблема, но мой код немного отличается, поэтому я не могу избавиться от некоторых двойных кавычек.

Мой код:

$features = array();
$geojson = array(
'type'      => 'FeatureCollection',
'features'  => $features
);
while($row = mysqli_fetch_assoc($result)) {
$type = $row['type'];
if($type == 'Point')
{
//$output = ;
$feature = array(
'type' => 'Feature',
'properties' => array(
'score' => "",
'fid' => ""//Other fields here, end without a comma
),

'geometry' => array(
'type' => $type,
'coordinates' => array($row['lat'], $row['lng'])
)
);
}
else {
//$output = '['.$row['more_info'].']';
$feature = array(
'type' => 'Feature',
'properties' => array(
'score' => "",
'fid' => ""//Other fields here, end without a comma
),

'geometry' => array(
'type' => $type,
'coordinates' => array('['.$row['more_info'].']')
)
);
}

array_push($geojson['features'], $feature);
};
mysqli_close($conn);
echo $newgeojson =  json_encode($geojson, JSON_NUMERIC_CHECK);

Вывод массива перед преобразованием в json (json_encode):

Array
(
[type] => FeatureCollection
[features] => Array
(
[0] => Array
(
[type] => Feature
[properties] => Array
(
[score] =>
[fid] =>
)

[geometry] => Array
(
[type] => Point
[coordinates] => Array
(
[0] => 88.388786315918
[1] => 22.551879205144
)

)

)

[1] => Array
(
[type] => Feature
[properties] => Array
(
[score] =>
[fid] =>
)

[geometry] => Array
(
[type] => Polygon
[coordinates] => Array
(
[0] => [[88.41796875, 22.568048815726],[88.41796875, 22.572804222704],[88.41796875, 22.577876475976],[88.428955078125, 22.578114233267],[88.428955078125, 22.573121244003],[88.428611755371, 22.568048815726],[88.41796875, 22.568048815726]]
)

)

)

)

)

Вывод, который я получаю после json_encode

{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"score":"","fid":""},"geometry":{"type":"Point","coordinates":[88.388786315918,22.551879205144]}},{"type":"Feature","properties":{"score":"","fid":""},"geometry":{"type":"Polygon","coordinates":["[[88.41796875, 22.568048815726],[88.41796875, 22.572804222704],[88.41796875, 22.577876475976],[88.428955078125, 22.578114233267],[88.428955078125, 22.573121244003],[88.428611755371, 22.568048815726],[88.41796875, 22.568048815726]]"]}}]}

Как вы можете видеть координаты, идущие с «».

"[[88.41796875, 22.568048815726],[88.41796875, 22.572804222704],[88.41796875, 22.577876475976],[88.428955078125, 22.578114233267],[88.428955078125, 22.573121244003],[88.428611755371, 22.568048815726],[88.41796875, 22.568048815726]]"

Я не хочу, чтобы двойные кавычки начинались и заканчивались несколькими координатами.

Пожалуйста, руководство / предложить мне, как я могу использовать эти двойные кавычки.

-1

Решение

Проблема здесь: 'coordinates' => array('['.$row['more_info'].']'),

Я не знаю, почему вы добавляете '[' а также ']' здесь, но похоже, что вы пытаетесь построить строку JSON вручную. Если вы сделаете это, то да, вы получите нежелательные кавычки при использовании json_encode() так как json_encode() обрабатывает все содержимое как строку.

Не понятно что $row['more_info'] содержит для начала, но я думаю, что он содержит строку, которая уже в формате JSON. Если вы хотите добавить это в свой выходной JSON, то первое, что вам нужно сделать, это преобразовать его обратно в массив PHP.

Ваш код, вероятно, должен выглядеть так:

'coordinates' => json_decode($row['more_info'], true)
0

Другие решения

@ Симба — Спасибо за руководство. Ваши гиды помогают мне получить точный результат

$output = json_decode('['.$row['more_info'].']');
$feature = array(
'type' => 'Feature',
'properties' => array(
'score' => "",
'fid' => ""//Other fields here, end without a comma
),

'geometry' => array(
'type' => $type,
'coordinates' => array($output)
)
);
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector