2017-03-11 35 views
0

我搞亂了使用Collection + JSON的teamsnap API,這似乎使得提取特定數據(至少對我而言)更難一點。PHP Curl,Collection + JSON對特定字段的響應

我需要做的是獲得每個成員的ID,所以我可以通過這些循環,然後得到每個成員的信息的JSON響應。到目前爲止,我正在進行第一步。

這裏是我到目前爲止的代碼:

<?php 
$url = "https://api.teamsnap.com/v3/members/search?team_id=TEAMID"; 
$access_key = 'TOKEN'; 
$request = curl_init($url); 
curl_setopt($request, CURLOPT_HTTPHEADER, array('Authorization: Bearer ' . $access_key)); 
$response = (string)curl_exec($request); 
curl_close($request); 

$result = json_decode($response, true); 
foreach ($result as $r) { 
echo $r['id']; 
} 
?> 

更新:我用的print_r沒有json_decode去一行一行在數千resposne的線怎麼看正是我真正想要的信息回來。這有點相關。對不起,導致你在白費力氣,但反應是相當複雜的,當它回來了,另一半是怎麼樣的數據可以返回例子....

{ 
    "collection":{ 
    "items":[ 
{ 
"href":"https://api.teamsnap.com/v3/members/MEMBERID", 
"data":[ 
"name":"id", 
"value":MEMBERID 
}, 
{ 
"name":"type", 
"value":"member" 
}, 
{ 
"name":"address_city", 
"value":"" 
}, 
{ 
"name":"address_state", 
"value":"" 
}, 
{ 
"name":"address_street1", 
"value":"" 
}, 
{ 
"name":"address_street2", 
"value":null 
}, 
{ 
"name":"address_zip", 
"value":"" 
}, 
+0

由於您的API未公開,您可以edie您的帖子並提供完整的返回$迴應結構(不需要完整的數據)?請註明數據來自$ response或$ result。 – hcheung

+0

請參閱我的回答。 – hcheung

回答

1

假設你提供的數據是從$response。數據結構不提供解析數據的簡單方法。爲了得到'name':'id'值對。這樣做:

$result = json_decode($response); 
foreach ($result->collection->items as $items=>$val) { 
    foreach ($val->data as $data=>$datasets) { 
     foreach ($datasets as $dataset=>$val) { 
      echo $dataset.': '.$val; 
      echo "<br>"; 
     } 
    } 
}; 

它將返回的結果爲:

name: id 
value: 3745306 
name: type 
value: user 
+0

感謝您的幫助!我得到一個PHP錯誤:foreach無效的參數;我已將JSON字符串更新爲實際從響應中獲得的內容,以前是API所說的。 – RiotAct

+0

根據您的修改後的文章,數據結構發生了變化,因此到達名稱字段的方式因此發生變化,而我以前的答案因此而不再起作用。查看我的新答案,瞭解如何獲取數據。 – hcheung

+0

在我做了一些編輯之後,這個工作正常!我現在如何只迴應特定ID的值? – RiotAct

0

根據您編輯的數據結構,我提供了我以前的帖子不再工作了答案。以下是根據您的修改後的數據結構:

$result=json_decode($response); 
foreach($result->collection->template->data as $dataset) { 
    foreach($dataset as $key=>$val) { 
     echo $key.": ".$val; 
     echo "<br>"; 
    } 
} 
+0

好吧,這幾乎就在那裏!它只返回第一組,而不是所有的成員。我們怎樣才能更深入地循環數組? – RiotAct

+0

我再次使用print_r更新了響應。我在上面添加了更新以供您審覈。 – RiotAct