如何在PHP中解析类似geo:point的JSON?
可能重复:如何在PHP中解析类似geo:point的JSON?,php,json,parsing,Php,Json,Parsing,可能重复: 我正在尝试解析geo:point/geo:lat,但进展很快。这是我目前掌握的代码 $content = get_data('http://ws.audioscrobbler.com/2.0/?method=geo.getevents&location=united+kingdom&api_key=XXX&format=json&limit=10000&festivalsonly=1'); $LFMdata = json_decode
我正在尝试解析geo:point/geo:lat,但进展很快。这是我目前掌握的代码
$content = get_data('http://ws.audioscrobbler.com/2.0/?method=geo.getevents&location=united+kingdom&api_key=XXX&format=json&limit=10000&festivalsonly=1');
$LFMdata = json_decode($content);
foreach ($LFMdata->events->event as $event) {
$venue_lat = $event->venue->location["geo:point"]["geo:lat"];
$venue_long = $event->venue->location["geo:point"]["geo:long"];
JSON将包含如下内容
"geo:point": {
"geo:lat": "52.7352",
"geo:long": "-1.695392"
}
有人知道吗?可以在JavaScript中看到示例,但不能在PHP中看到
$venue_lat = $event->venue->location->{"geo:point"}->{"geo:lat"};
或者让它像关联数组一样返回所有内容(第二个参数json_decode
设置为true
):
什么是变量转储($LFMdata)代码>返回?请尝试
$object->{'geo:point'}->{'geo:lat}
或类似操作。是否确实已将位置作为数组返回?尝试执行var\u dump($event->vention->location)
并查看它将返回什么:对象(stdClass){6(5){[“geo:point”]=>object(stdClass){7(2){[“geo:lat”]=>string(0)”[“geo:long”]=>string(0)”}[“city”=>string(6)“伦敦”[“国家”=>string(14)“英国”[“街道”=>string(0)”[“邮政编码”=>string(0)”}
@halfer的答案是正确的,或者返回一个数组(json_decode($data,TRUE))。
$LFMdata = json_decode($content, true);
foreach ($LFMdata["events"]["event"] as $event) {
$venue_lat = $event["venue"]["location"]["geo:point"]["geo:lat"];
$venue_long = $event["venue"]["location"]["geo:point"]["geo:long"];