Rumah > Soal Jawab > teks badan
Saya memulangkan data menggunakan GraphQL/curl seperti ini:
{ "data" : { "publisher" : { "contracts" : { "totalCount" : 11, "count" : 1, "resultList" : [
Saya ingin mendapatkan tatasusunan resultList dan terus mendapat ralat "Amaran: Percubaan membaca 'data' sifat pada rentetan" apabila cuba melakukan $result->data untuk beralih ke objek pertama. Apa yang saya buat salah?
Pembolehubah dalam permintaan curl ialah $result.
Kemas kini: Saya telah mencuba penyahkodan, adakah data yang dikembalikan jenis INT? Apa nak buat?
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粉9550636622024-02-27 14:54:39
Pertama, pastikan anda menyemak sama ada hasilnya adalah json yang sah.
Kemudian gunakan json_decode untuk mendapatkan objek
$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)) }