У меня есть довольно большой файл json с координатами в следующем формате
"[[3.2,1],[4.8,2]]"
что представляет (3.2,1) и (4.8,2)
Я использую эти координаты для создания географической карты D3, но когда php моделирует эту информацию в объект geoJSON, я сталкиваюсь со следующей ошибкой:
Мне нужно преобразовать координаты в массив, для которого я использую json_decode
. Однако:
json_decode("[[3.2,1],[4.8,2]]")
возвращается
Array
(
[0] => Array
(
[0] => 3
[1] => 1
)
[1] => Array
(
[0] => 4
[1] => 2
)
)
Где я теряю десятичные дроби. Как я могу предотвратить это?
Редактировать:
{"type": "FeatureCollection",
"features": [{
"type": "Feature",
"geometry": {
"type": "Polygon",
"coordinates": "[[[8.7, 11], [8.89, 12.13],[9.27, 12.13], [9.9, 12], [9.7, 10.8], [8.7, 11]]]"
},
"properties": {
"name": "04",
"count": "25"
}
}]
}
Это пример данных, которые я получаю в качестве вывода. (Предполагается, что он представляет собой карту комнат, которые получают цвет плотности при его использовании)
Я могу разобрать это с помощью jQuery.parseJSON(data)
, но выполнение следующего кода D3 приводит к самым странным ошибкам:
val(svgname).append("g")
.selectAll("path")
.data(geoJSONobject.features)
.enter().append("path")
.attr("d", path)
...
Я думаю, это из-за кавычек вокруг массива координат.
Изменить (2) - фактическое решение
Решение, которое я принял, было обходным путем, но настоящая проблема заключалась в локализованных настройках php. с использованием:
echo json_encode($dataset, JSON_NUMERIC_CHECK);
в php-файле все вопросы были решены. Хотя я бы обновил вопрос, так как он все еще рассматривается (если кто-нибудь решит проблему)
5.2.0 - 7.0.0alpha2
3v4l.org/rtamO#v520var_dump()
переменной, содержащей JSON. - person AbraCadaver   schedule 09.07.2015json_decode('[["3.2","1"],["4.8","2"]]');
- person Travesty3   schedule 09.07.2015