我一直在試圖解析一個沒有成功的json數組。我可以得到一個根元素,但沒有任何數組元素。下面是我的Foursquare的json數組的開始,它有重新發生的場地元素。如何解析json數組?
response: {
keywords: {}
suggestedRadius: 10000
headerLocation: "here"
headerFullLocation: "here"
headerLocationGranularity: "unknown"
headerMessage: "Suggestions for Friday evening"
totalResults: 214
groups: [
{
type: "Recommended Places"
name: "recommended"
items: [
{
reasons: {
count: 0
items: [ ]
}
venue: {
id: "4b799a05f964a520b1042fe3"
name: "Green Gables"
contact: {
phone: "3097472496"
formattedPhone: "(309) 747-2496"
}
location: {
address: "17485 East 2500 North Rd"
以下是我嘗試獲取餐廳名稱的PHP代碼。
$uri = file_get_contents("https://api.foursquare.com/v2/venues/explore?ll=40.7,-89&oauth_token=xxxxxxxxx", true);
$obj = json_decode($uri, true);
foreach($obj['response']['groups']['items']['venue'] as $p)
{']
if(isset($p['name))
echo $p['name'];
}
當我執行此代碼時,我收到一個錯誤,提示'Invalid index:venue。如果我只使用foreach($ obj ['response'] ['groups']作爲$ p),我會得到結果。所以它與確定組下的元素的名稱有關。
好的。這是我最新的PHP代碼。它深入到名稱元素,然後給我一個錯誤,說「Unefined index:name」和「Illegal string offset name」。這條消息出現14次,這是數組中每個項目的一次。 「不recongized?任何想法。
foreach($obj['response']['groups'] as $p)
{
if(isset($p['items']))
{
foreach($p['items'] as $p1)
{
if(isset($p1['venue']))
{
// echo varDumpToString($p1['venue']); // this dump works ok and shows the elements
foreach($p1['venue'] as $p2)
{
echo varDumpToString($p2['name']); // This is where I get the error
}
}
}
}
}
這是完整的和逐字迴應嗎?如果是這樣,它甚至不是有效的JSON。 (缺少逗號,缺少外層包袱,...) – knittl
我改變了foreach,如下所示:foreach($ obj ['response'] ['groups'] ['items'] ['venue'] as $ p)建議我改變? – Dave
您發佈的回覆無效JSON,json_decode無法正常工作。如果您不完整地發佈它,您可能需要使用'var_dump'來查看已解碼的對象並從中得出正確的下標。 – knittl