use*_*025 6 php string json object
我有以下字符串:
{"Coords":[{"Accuracy":"65","Latitude":"53.277720488429026","Longitude":"-9.012038778269686","Timestamp":"Fri Jul 05 2013 11:59:34 GMT+0100 (IST)"},{"Accuracy":"65","Latitude":"53.277720488429026","Longitude":"-9.012038778269686","Timestamp":"Fri Jul 05 2013 11:59:34 GMT+0100 (IST)"},{"Accuracy":"65","Latitude":"53.27770755361785","Longitude":"-9.011979642121824","Timestamp":"Fri Jul 05 2013 12:02:09 GMT+0100 (IST)"},{"Accuracy":"65","Latitude":"53.27769091555766","Longitude":"-9.012051410095722","Timestamp":"Fri Jul 05 2013 12:02:17 GMT+0100 (IST)"},{"Accuracy":"65","Latitude":"53.27769091555766","Longitude":"-9.012051410095722","Timestamp":"Fri Jul 05 2013 12:02:17 GMT+0100 (IST)"}],"Scan":"Whatever"}
Run Code Online (Sandbox Code Playgroud)
我想在php中解码.该字符串是通过SQL查询获得的.见下面的代码:
$TrackDetails_Query= "SELECT * FROM Tracks WHERE TrackID='".$TrackNum."' ORDER BY TrackID DESC";
$TrackDetails_Result= mysql_query($TrackDetails_Query) or die (mysql_error());
if (mysql_num_rows($TrackDetails_Result)==0){
echo 'There are no tracks for the number entered';
}
else{
$traces=$row['Traces'];
$decoded_traces=json_decode($traces);
echo $decoded_traces;
}
}
Run Code Online (Sandbox Code Playgroud)
但是我收到了错误:
Catchable fatal error: Object of class stdClass could not be converted to string
Run Code Online (Sandbox Code Playgroud)
Pau*_*xon 23
您收到错误是因为您尝试将stdClass对象转换为字符串,这是它不支持的.
而不是echo $decoded_traces尝试var_dump($decoded_traces)- 这将提供您已解码的对象的诊断视图(我认为这是您想要的).你会发现它看起来像这样
class stdClass#1 (2) {
public $Coords =>
array(5) {
[0] =>
class stdClass#2 (4) {
public $Accuracy =>
string(2) "65"
public $Latitude =>
string(18) "53.277720488429026"
public $Longitude =>
string(18) "-9.012038778269686"
public $Timestamp =>
string(39) "Fri Jul 05 2013 11:59:34 GMT+0100 (IST)"
}
[1] => (more of the same, edited for brevity)
[2] =>
[3] =>
[4] =>
}
public $Scan =>
string(8) "Whatever"
}
Run Code Online (Sandbox Code Playgroud)
默认情况下,json_encode将创建如上所述的stdClass对象.如果您更喜欢关联数组,true请将第二个参数传递给json_decode,例如$decoded_traces=json_decode($traces, true);
另外,虽然stdClass不能转换成字符串,但是你自己的类可以 - 实现__toString魔术方法的类可以转换为字符串!
代替
$decoded_traces=json_decode($traces);
echo $decoded_traces;
Run Code Online (Sandbox Code Playgroud)
尝试
$decoded_traces=json_decode($traces, true);
print_r $decoded_traces;
Run Code Online (Sandbox Code Playgroud)
尝试使用这个
$decoded_traces=json_decode($traces, true);
而不是这个
$decoded_traces=json_decode($traces);
它将把你的 stdClass 转换为数组。请注意,这$decoded_traces是数组,然后您可以根据需要使用。