Estoy haciendo una solicitud JSON en PHP usando curl. He almacenado la respuesta en una variable llamada $registerCompany e imprimiéndola en la pantalla para ver qué ha regresado, obtengo la siguiente respuesta imprimiendo mi variable

{
resultCode: "duplicate",
result: {
isValid: true,
referenceKey: "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx"
},
success: false
}

Sé que este es un objeto cuando trato de obtener sus propiedades como $registerCompany->resultCode obtengo el siguiente error:

Intentando obtener la propiedad 'resultCode' de no objeto

Lo que está mal aquí, ¿alguien puede ayudar por favor?

Aquí está mi código PHP

function enquiry_company($data) {
    $curl = curl_init();

    curl_setopt_array($curl, [
          CURLOPT_URL => "hidden",
          CURLOPT_RETURNTRANSFER => true,
          CURLOPT_ENCODING => "",
          CURLOPT_MAXREDIRS => 10,
          CURLOPT_TIMEOUT => 30,
          CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
          CURLOPT_CUSTOMREQUEST => "POST",
          CURLOPT_POSTFIELDS => json_encode($data),
          CURLOPT_HTTPHEADER => [
                "content-type: application/json",
                "x-api-key: hidden"
              ],
          CURLOPT_SSL_VERIFYHOST => 0,
          CURLOPT_SSL_VERIFYPEER => 0,
        ]);

    $response = curl_exec($curl);
    curl_close($curl);
    return $response;

}


$api_data = [
            "identityNumber" => 123456789,
            "commercialRecordNumber" => 123456789,
            "commercialRecordIssueDateHijri" => 01-01-2000,
            "phoneNumber" => 00000000000,
            "extensionNumber" => 0,
            "emailAddress" => mail@mail.com,
            "managerName" => 'Manager',
            "managerPhoneNumber" => 000000000,
            "managerMobileNumber" => 000000000,
        ];

$registerCompany = enquiry_company($api_data);
echo $registerCompany;
$registerCompany = json_decode($registerCompany, true);
$registerCompany = (object) $registerCompany;
echo $registerCompany->resultCode;

Gracias

-1
Amjad 10 sep. 2018 a las 05:54

3 respuestas

La mejor respuesta

Si recupera una matriz, use $registerCompany = json_decode($registerCompany), esto generará un objeto.

Si lo hiciste $registerCompany = json_decode($registerCompany, true) esto te dará una matriz en lugar de un objeto.

http://php.net/manual/en/function.json-decode.php

2
Eli 10 sep. 2018 a las 02:57

Asumiendo que su respuesta es una matriz

Primero convierta su matriz en un objeto para hacer eso

$registerCompany = (object)$registerCompany;

Entonces aquí tienes tu matriz ahora es un objeto y se puede acceder

echo $registerCompany->resultCode;
1
Beginner 10 sep. 2018 a las 03:16

Use gettype para ver qué tipo de variable tiene en primer lugar.

http://www.php.net/manual/en/function.gettype.php

A partir de ahí, tienes tres posibilidades. Una es que es una cuerda. Si es una cadena, eso significa que está en formato JSON. Eso significa que necesita decodificar JSON el formato para que funcione. Ver la respuesta de Eli para eso.

Dos, está en forma de matriz. En ese caso, use la respuesta del principiante y escriba emitirlo a un objeto con (object) $variableName;

1
Michael Ryan Soileau 10 sep. 2018 a las 03:23