如何使用PHP解析JSON字符串
我有一个JSON字符串,其中有1-n个lat/lng记录。它看起来像这样:如何使用PHP解析JSON字符串,php,json,parsing,Php,Json,Parsing,我有一个JSON字符串,其中有1-n个lat/lng记录。它看起来像这样: {\"lat\":37.790388261934424,\"lng\":-122.46047996826172},{\"lat\":37.789608231530124,\"lng\":-122.46344112701416} 什么是解析该循环以获取lat/lng值的好方法?转义的双引号会影响解析吗 谢谢, Alex使用 您需要首先取消对报价的浏览;只用 $unescaped_data = str_replace('\
{\"lat\":37.790388261934424,\"lng\":-122.46047996826172},{\"lat\":37.789608231530124,\"lng\":-122.46344112701416}
什么是解析该循环以获取lat/lng值的好方法?转义的双引号会影响解析吗
谢谢,
Alex使用
您需要首先取消对报价的浏览;只用
$unescaped_data = str_replace('\"','"',$data)
并删除转义引号在您的情况下,最好使用:
$array = json_decode(stripslashes("[$input_string]"), 1);
请注意,在PHP中,浮点值将失去一些精度
$ll = '[{"lat":37.790388261934424,"lng":-122.46047996826172},{"lat":37.789608231530124,"lng":-122.46344112701416}]';
$ll = json_decode($ll);
print_r($ll);
印刷品
Array
(
[0] => stdClass Object
(
[lat] => 37.7903882619
[lng] => -122.460479968
)
[1] => stdClass Object
(
[lat] => 37.7896082315
[lng] => -122.463441127
)
)
试试为什么它里面有斜杠?因为它用双引号括起来。@lucifrieve:可能是因为magic\u quotes\u gpc被打开了。有没有办法用这个操作来保持PHP中浮点值的精度?它们的浮点值非常重要。如果他用双引号括起来,就不需要转义字符串。他的JSON在
{},{}
周围缺少[]
,如您所示@Genadinik,对于Lat和Lon来说9个小数是不够的?@Genadinik:对于json_decode来说是不够的。在PHP中无法处理更精确的数字,它只知道float
。损失的精度很小,我实际上怀疑Javascript表示也不太精确。(解决方法包括手动解析,并对所有坐标使用gmp函数:-在整个应用程序中。)它从我这里起作用,即使数据插入到数组中,所以我必须使用数组[0]['data']检索它