通过GET打印数据https://api.groovehq.com/v1/tickets

时间:2018-12-12 14:42:34

标签: json wordpress api

我正试图通过Groove通过JSON API获取数据。

https://www.groovehq.com/docs/tickets#listing-ticketshttps://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()处给出错误。有人知道我在做什么错吗?或有什么建议?

1 个答案:

答案 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