如何获得API响应

时间:2017-08-14 07:37:43

标签: php api curl

我有这样的回应:

{
    "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 个答案:

答案 0 :(得分:4)

你在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'];

在这两种情况下,您都可以获得所需的输出

答案 1 :(得分:2)

执行如下所示的 json_decode

$respData = json_decode($response, true);

然后打印

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