gpt4 book ai didi

php - json_decode 是舍入 float ,我该如何防止呢?

转载 作者:可可西里 更新时间:2023-11-01 12:17:14 25 4
gpt4 key购买 nike

我有一个相当大的 json 文件,其坐标格式如下

"[[3.2,1],[4.8,2]]"

代表(3.2,1)和(4.8,2)

我正在使用这些坐标来生成 D3 地理 map ,但是当 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"
}
}]
}

这是我作为输出获得的数据示例。 (它应该代表一个房间的 map ,通过它的使用获得密度颜色)

我能够使用 jQuery.parseJSON(data) 解析它,但是运行以下 D3 代码会产生最奇怪的错误:

val(svgname).append("g")
.selectAll("path")
.data(geoJSONobject.features)
.enter().append("path")
.attr("d", path)
...

error我认为这是因为坐标数组周围的引号。

编辑(二)——实战

我接受的解决方案是一种变通方法,但真正的问题是本地化的 php-settings。使用:

echo json_encode($dataset, JSON_NUMERIC_CHECK);

在 php 文件中,所有问题都已解决。虽然我会更新这个问题,因为它仍在研究中(如果有人会遇到这个问题)

最佳答案

我遇到了同样的问题。我使用以下正则表达式解决了它

解决方案 1

$yourJsonVariable = preg_replace('/:\s*(\-?\d+(\.\d+)?([e|E][\-|\+]\d+)?)/', ': "$1"', $yourJsonVariable);

将其转化为数组

$array = json_decode($yourJsonVariable, true);

感谢此 SO LINK

解决方案 2

可以设置ini_set('precision',1);

解决方案 3

$decoded = json_decode($encoded, true, null, JSON_BIGINT_AS_STRING);

NOTE: The Last solution will work only for PHP > 5.4

你可能想看看这个 Blog

关于php - json_decode 是舍入 float ,我该如何防止呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31320377/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com