@jammy

Как представить строку из mysql в JSON без кавычек?

Помогите чайнику пожалуйста. Что-то вообще не могу сообразить.
Добавляю на Яндекс карту метки с помощью objectManager (используя json)
Координаты объектов в базе являются строкой (например: 55.722012, 37.183899)
JSON собираю с помощью json_encode
Естесственно Яндекс API не хочет понимать параметр "geometry":{"type":"Point","coordinates":"[55.722012, 37.183899]"}
так как координаты должны быть массивом "geometry":{"type":"Point","coordinates":[55.722012, 37.183899]}
Как грамотней поступить? Очень не хочется делать изменения именно в mysql. Есть ли возможность придумать костыль при сборке json?

Сокращенный код:
while ($row = mysqli_fetch_array($result))
    {
        $geometry[] = array(
            'type'    => 'Point',
            'coordinates' => '['.$row['y_coordinates'].']'
            );
        $employee_data[] = array (
            'geometry'   =>   $geometry
            );
    }
    json_encode($employee_data, JSON_UNESCAPED_UNICODE | JSON_NUMERIC_CHECK);
  • Вопрос задан
  • 180 просмотров
Решения вопроса 1
0xD34F
@0xD34F
Наверное, надо не строку, а массив класть в coordinates. Попробуйте заменить

'['.$row['y_coordinates'].']'

на что-то вроде

explode(', ', $row['y_coordinates'])

А если нужно, чтобы элементы массива были числами:

array_map('floatval', explode(', ', $row['y_coordinates']))
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@krypt3r
'coordinates' => '['.$row['y_coordinates'].']'
Тем самым вы создали не массив, а строку, обрамлённую квадратными скобками.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы