Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用PHP解析JSON字符串_Php_Json_Parsing - Fatal编程技术网

如何使用PHP解析JSON字符串

如何使用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('\

我有一个JSON字符串,其中有1-n个lat/lng记录。它看起来像这样:

{\"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']检索它