2013-05-06 54 views
0

我使用下面的代码调用了一个webservice。现在我想回应一些它的价值。但我无法。我尝试了一些选择,但他们没有工作。Echo JSON值

<?php 
    $api_url = "myurl"; 
    $response = file_get_contents($api_url); 
    $my_array = json_decode($response, true);  
?> 

上面的代码给了我JSON resonse

{ 
    "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

你尝试了var_dump或print_r来看看你会得到什么? – Duniyadnd 2013-05-06 22:48:39

+0

您发布的JSON似乎不是有效的 – 2013-05-06 22:51:32

+0

我不知道这是否是您的问题,但对我而言,这看起来不像是有效的JSON。 http://jsonlint.com/ – Cypher 2013-05-06 22:51:52

回答

4
$my_array = json_decode($response); 
$my_array->places->place[0]->woe_name; 

my_array包含一个对象,places包含对象,place包含具有嵌套的对象阵列。

1

尝试:

echo $my_array['places']['place'][0]['woe_name']; 

如果json_decode第二个参数是true它将返回一个数组。如果您不确定,可以使用var_dump来检查可变长度类型。

在Json中,花括号{}用于"key": value对的对象,方括号[]用于对象数组。

1

它在json的开头忽略了{

有了它,它给:

$my_array['places']['place'][0]['woe_name'] 
0

看起来你的JSON缺少卷曲brackey - 你需要在一开始创建一个,它缺少一个

“{”之前“的地方”