Php Json Decode: valor de visualización de elementos de segundo nivel

Oct 28 2020

Estoy intentando decodificar el formato JSON Mi punto final de API es https://api.reliableserver.host/api/landings

Y esta es la salida

{
    "success": true,
    "data": [
        {
            "id": 1,
            "primary_balance": "$4,184.37",
            "primary_currency": "USD",
            "secondary_balance": "¥0",
            "secondary_currency": "JPY",
            "tertiary_balance": "฿0.00",
            "tertiary_currency": "THB",
            "first_language": "ไทย",
            "second_language": "English",
            "footer_text": "a",
            "created_at": "2020-10-26T07:45:49.000000Z",
            "updated_at": "2020-10-28T05:31:04.000000Z",
            "deleted_at": null
        }
    ],
    "message": "Landings retrieved successfully"
}

Necesito hacerme eco de valores individuales, por ejemplo: Saldo primario: $ 4,184.37

Intenté usar esto:

$url = "https://api.reliableserver.host/api/landings"; $obj = json_decode($url); echo $obj>primary_balance;

Pero no funcionó, por favor guíeme qué estoy haciendo mal.

Respuestas

2 sta Oct 28 2020 at 13:10

Puedes hacerlo de esta manera:

$url = '{"success": true,"data": [{"id": 1,"primary_balance": "$4,184.37","primary_currency": "USD","secondary_balance": "¥0","secondary_currency": "JPY","tertiary_balance": "฿0.00","tertiary_currency": "THB","first_language": "ไทย","second_language": "English","footer_text": "a","created_at": "2020-10-26T07:45:49.000000Z","updated_at": "2020-10-28T05:31:04.000000Z","deleted_at": null}],"message": "Landings retrieved successfully"}';
$obj = json_decode($url, true);
echo $obj['data'][0]['primary_balance']; // output $4,184.37

El código anterior probado aquí

Necesita el método file_get_contents () para obtener los datos JSON de su URL dada.

$url = "https://api.reliableserver.host/api/landings"; $obj = json_decode(file_get_contents($url), true); echo $obj['data'][0]['primary_balance'];
// output $4,184.37
ChiragKamat Oct 28 2020 at 13:21

Básicamente, no estás llamando a esa API en ningún lado. Si es un punto final abierto (sin autenticación ni encabezados, puede hacer file_get_contents () o le sugiero que use curl . Además, debe verificar la estructura de datos de respuesta, tiene una clave de 'datos' que es una matriz. necesita usar foreach para iterar en la clave 'datos'.

He dado una respuesta de muestra que debería funcionar si solo hay 1 elemento en los datos.

    $url = "https://api.reliableserver.host/api/landings"; $resp = file_get_contents($url); $obj= json_decode($resp);// will return in object form echo $obj->data[0]->primary_balance;

o

$url = "https://api.reliableserver.host/api/landings"; $resp = file_get_contents($url); $obj= json_decode($resp, true); // will return in array form echo $obj['data'][0]['primary_balance'];

json_decode ()