Как получить ответ API

У меня есть этот ответ:

{
"Contratos": [
{
"IdCUPS": 0,
"CodigoCUPS": "",
"IdContrato": 0,
"CodigoContrato": null,
"IdCliente": 0,
"IdDocumento": null,
"IdEmpresa": null,
"Incidencias": [
{
"Propiedad": "CodigoCUPS",
"Code": 0,
"CodeAlfa": "",
"Mensaje": "El cups ya esta asignado a contratos activos",
"IsAdvertencia": false,
"IsError": true,
"IsExcepcion": false,
"ExceptionTimestamp": "0001-01-01T00:00:00",
"ExceptionMessage": "",
"ExceptionStackTrace": "",
"InnerException": "",
"ImageSource": ""}
]
}
]
}

Как я могу получить доступ к опции «Mensaje»?
У меня есть этот код, где я делаю curl_init и его параметры:

$ch = curl_init($url.$contratoPotencial);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$data_json);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);

Я пытался с этим кодом:

echo "<br><br> Mensaje: ";
echo "<br>".$response->Contratos->Incidencias->Mensaje;

Но это не работает!

2

Решение

У вас есть смесь массива и объекта в json: попробуйте решение ниже:

$response = '{
"Contratos": [
{
"IdCUPS": 0,
"CodigoCUPS": "",
"IdContrato": 0,
"CodigoContrato": null,
"IdCliente": 0,
"IdDocumento": null,
"IdEmpresa": null,
"Incidencias": [
{
"Propiedad": "CodigoCUPS",
"Code": 0,
"CodeAlfa": "",
"Mensaje": "El cups ya esta asignado a contratos activos",
"IsAdvertencia": false,
"IsError": true,
"IsExcepcion": false,
"ExceptionTimestamp": "0001-01-01T00:00:00",
"ExceptionMessage": "",
"ExceptionStackTrace": "",
"InnerException": "",
"ImageSource": ""}
]
}
]
}';

$responseData = json_decode($response);
echo "<br><br> Mensaje: ";
echo "<br>".$responseData->Contratos[0]->Incidencias[0]->Mensaje;

Выход

Mensaje:
El cups ya esta asignado a contratos activos

ИЛИ ЖЕ

Закодируйте полный JSON в массив, как показано ниже:

$responseData = json_decode($response, true);
echo "<br><br> Mensaje: ";
echo "<br>".$responseData['Contratos'][0]['Incidencias'][0]['Mensaje'];

В обоих случаях вы получите желаемый результат

4

Другие решения

сделать json_decode как ниже,

$respData = json_decode($response, true);

а затем распечатать

echo $respData['Contratos']['Incidencias']['Mensaje'];
2

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector