Maison  >  Questions et réponses  >  le corps du texte

Utiliser curl pour accéder aux objets renvoyés par GraphQL

J'ai renvoyé les données en utilisant GraphQL/curl comme ceci :

{
  "data" : {
    "publisher" : {
      "contracts" : {
        "totalCount" : 11,
        "count" : 1,
        "resultList" : [

Je souhaite obtenir un tableau resultList et continuer à recevoir l'erreur "Avertissement : tentative de lecture de la propriété 'données' sur la chaîne" lorsque j'essaie d'effectuer $result->data pour passer au premier objet. Qu'ai-je fait de mal?

La variable dans la requête curl est $result.

Mise à jour : j'ai essayé le décodage, les données renvoyées sont-elles de type INT ? ce qu'il faut faire?

function getData($data_String){

    $endpoint = "https://programs.api.cj.com/query";
    $authToken = "pass";
    $qry = '{"query":"{ publisher { contracts(publisherId: \"xxxxxxx\", limit: 1, filters: {advertiserId: \"'.$advertiser_id.'\"}) { totalCount count resultList { startTime endTime status advertiserId programTerms { id name specialTerms { name body } isDefault actionTerms { id actionTracker { id name description type } lockingMethod { type durationInDays } performanceIncentives { threshold { type value } reward { type commissionType value } currency } commissions { rank situation { id name } itemList { id name } promotionalProperties { id name } rate { type value currency } } } } } } } }","variables":null}';

    $headers = array();
    $headers[] = 'Content-Type: application/json';
    $headers[] = 'Authorization: Bearer '.$authToken;

    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, $endpoint);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $qry);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

    $result = curl_exec($ch);


    if (curl_errno($ch)) {
        echo 'Error:' . curl_error($ch);
    }

    curl_close($ch);

    $data = json_decode($result);


    return $data;

}

P粉615829742P粉615829742259 Il y a quelques jours407

répondre à tous(1)je répondrai

  • P粉955063662

    P粉9550636622024-02-27 14:54:39

    Tout d’abord, assurez-vous de vérifier si le résultat est un json valide.

    Ensuite, utilisez json_decode pour obtenir l'objet

    $result = json_decode($result);
    if (is_object($result)) {
      if (!empty($result->data->publisher->contracts->resultList)) {
         $resultList = $result->data->publisher->contracts->resultList;
      }
    } else {
      // Log or something
       error_log("json decode return: " . print_r($result, true))
    }

    répondre
    0
  • Annulerrépondre