我正试图通过Groove通过JSON API获取数据。
https://www.groovehq.com/docs/tickets#listing-tickets 和https://www.groovehq.com/docs
这是我编写的代码:
<?php
function timjson_front($atts, $content) {
global $wpdb;
$access_token = ""; //insert token
$user_email = ""; // insert customers email
$json = getJSON($access_token, $user_email);
$html = "";
foreach($json as $key => $waarde) {
$html .= $key . ' = ' . $waarde;
}
return html_entity_decode($html);
}
function getJSON($access_token, $user_email) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, 'https://api.groovehq.com/v1/tickets?acces_token=' . $access_token . '&customer=' . $user_email);
$result = curl_exec($ch);
curl_close($ch);
$obj = json_decode($result);
return $obj;
}
?>
该代码在wordpress页面上运行,并且是一个自制插件的一部分。这个想法是将来自客户的票证打印在页面上。
Wordpress在foreach()
处给出错误。有人知道我在做什么错吗?或有什么建议?
答案 0 :(得分:0)
第一
您正在$obj
上进行迭代,但是$obj = json_decode($result);
将returns an object。您需要遍历array
,因此请使用json_decode($result, true)
第二
基于API,第一个键是tickets
,并具有多个票证
因此,您要从foreach中的票证开始:
foreach($json['tickets'] as $ticket){
foreach($ticket as $key => $waarde) {
$html .= $key . ' = ' . $waarde;
}
}
第三
您正在使用$html .= $key . ' = ' . $waarde;
连接字符串
但是基于API,这些值始终不是字符串。
foreach($json['tickets'] as $ticket){
foreach($ticket as $key => $waarde) {
if(!in_array($key, ['tags','links'])){ // ignore the keys "tags" and "links" because they are array
$html .= $key . ' = ' . $waarde;
}
}
}
编辑:POC https://3v4l.org/dblmj