我使用以下代码调用了一个web服务。现在我想从中回应一些价值。但我无法做到。我尝试了一些选择,但他们没有用。
<?php
$api_url = "myurl";
$response = file_get_contents($api_url);
$my_array = json_decode($response, true);
?>
上面的代码给了我JSON共鸣
{
"places":{
"place":[
{
"place_id":"FHa5VXVTU7MbX9qW",
"woeid":"2192348",
"latitude":"32.433",
"longitude":"74.366",
"place_url":"\/Pakistan\/Punjab\/Bhopalwala",
"place_type":"locality",
"place_type_id":"7",
"timezone":"Asia\/Karachi",
"name":"Bhopalwala, Punjab, Pakistan",
"woe_name":"Bhopalwala"
}
],
"latitude":"32.45",
"longitude":"74.34",
"accuracy":"16",
"total":1
},
"stat":"ok"
}
我试图回复woe_name。
echo $my_array['places']['place']['woe_name'];
print $my_array->places["0"]->place->woe_name;
这是var_dump
array(2) {
["places"]=>
array(5) {
["place"]=>
array(1) {
[0]=>
array(10) {
["place_id"]=>
string(16) "FHa5VXVTU7MbX9qW"
["woeid"]=>
string(7) "2192348"
["latitude"]=>
string(6) "32.433"
["longitude"]=>
string(6) "74.366"
["place_url"]=>
string(27) "/Pakistan/Punjab/Bhopalwala"
["place_type"]=>
string(8) "locality"
["place_type_id"]=>
string(1) "7"
["timezone"]=>
string(12) "Asia/Karachi"
["name"]=>
string(28) "Bhopalwala, Punjab, Pakistan"
["woe_name"]=>
string(10) "Bhopalwala"
}
}
["latitude"]=>
string(5) "32.45"
["longitude"]=>
string(5) "74.34"
["accuracy"]=>
string(2) "16"
["total"]=>
int(1)
}
["stat"]=>
string(2) "ok"
}
我该怎么做?
答案 0 :(得分:4)
$my_array = json_decode($response);
$my_array->places->place[0]->woe_name;
my_array
包含一个对象,places
包含一个对象,place
包含一个带有嵌套对象的数组。
答案 1 :(得分:1)
尝试:
echo $my_array['places']['place'][0]['woe_name'];
如果json_decode的第二个参数是true
,它将返回一个数组。如果您不确定,可以使用var_dump检查可变数据类型。
在Json中,花括号{}
用于"key": value
对的对象,方括号[]
用于对象数组。
答案 2 :(得分:1)
它在你的json开头错过了{
。
有了它,它给出了:
$my_array['places']['place'][0]['woe_name']
答案 3 :(得分:0)
看起来你的JSON缺少一个卷曲的brackey - 你需要在开头创建一个,它缺少一个
'{'在“地方”之前