在PHP中解析JSON“stdClass无法转换为字符串”错误

时间:2011-04-03 03:45:56

标签: php parsing

我有这个字符串:

{\"lat\":37.790388261934424,\"lng\":-122.46047996826172},{\"lat\":37.789608231530124,\"lng\":-122.46344112701416}

然后感谢StackOverflowers的帮助,我这样做是为了去掉斜杠:

$markers = stripslashes($markers);

然后我尝试添加解码函数

似乎需要的外部括号
$markers = json_decode('['.$markers.']');

这是正确的方法吗?然后我试着这样做:

foreach($markers as $key => $value) 
{
    $some_string = $some_string.' ( '.$value.' ) ';
}

哪个游戏给我这个错误:

Object of class stdClass could not be converted to string

但我真正需要的是将lat / lng值提取到$ lat,$ lng变量中。有人可以告诉我如何修复我得到的错误并将值放入变量吗?

谢谢, 亚历

4 个答案:

答案 0 :(得分:5)

...试

foreach($markers as $marker) 
{
     $some_string .= '('.$marker->lat.','.$marker->lng.')';
}

结果...

(37.7903882619,-122.460479968)(37.7896082315,-122.463441127)

答案 1 :(得分:3)

foreach($markers as $key => $value) 
{
    // $value is object with lat and lng properties 
    $some_string = $some_string.' ( lat:'.$value->lat.' ) ';
}

答案 2 :(得分:0)

这也让我感到困惑,为什么json_decode()会返回封装在对象中的数据?

事实证明,Javascript中的所有数组都被视为对象,因此json_decode()将它们作为PHP stdClass的对象返回。尝试在$ marker上执行print_r()以查看它的结构。

答案 3 :(得分:0)

这里有效

var json = JSON.parse(<?php echo "'" . stripslashes($_POST['json']) . "'" ?>);