variable servicios recorrer leer ejemplo crear con archivo php json

servicios - variable json php



¿Cómo puedo analizar un archivo JSON con PHP? (15)

Cuando decodifiques una cadena json, obtendrás un objeto. No es una matriz. Entonces, la mejor manera de ver la estructura que está obteniendo es hacer un var_dump de la decodificación. (este var_dump puede ayudarlo a comprender la estructura, principalmente en casos complejos).

<?php $json = file_get_contents(''/home/michael/test.json''); $json_a = json_decode($json); var_dump($json_a); // just to see the structure. It will help you for future cases echo "/n"; foreach($json_a as $row){ echo $row->status; echo "/n"; } ?>

Intenté analizar un archivo JSON usando PHP. Pero ahora estoy atascado.

Este es el contenido de mi archivo JSON:

{ "John": { "status":"Wait" }, "Jennifer": { "status":"Active" }, "James": { "status":"Active", "age":56, "count":10, "progress":0.0029857, "bad":0 } }

Y esto es lo que he intentado hasta ahora:

<?php $string = file_get_contents("/home/michael/test.json"); $json_a = json_decode($string, true); echo $json_a[''John''][status]; echo $json_a[''Jennifer''][status];

Pero como no sé los nombres (como ''John'' , ''Jennifer'' ) y todas las claves y valores disponibles (como ''age'' , ''count'' ) de antemano, creo que necesito crear un bucle foreach.

Apreciaría un ejemplo para esto.


Es completamente ajeno a mí que nadie haya señalado que sus "etiquetas" iniciales están equivocadas. Estás creando un objeto con {}, mientras que puedes crear una matriz con [].

[ // <-- Note that I changed this { "name" : "john", // And moved the name here. "status":"Wait" }, { "name" : "Jennifer", "status":"Active" }, { "name" : "James", "status":"Active", "age":56, "count":10, "progress":0.0029857, "bad":0 } ] // <-- And this.

Con este cambio, el json se analizará como una matriz en lugar de un objeto. Y con esa matriz, puedes hacer lo que quieras, como bucles, etc.


Intentalo:

foreach ($json_a as $key => $value) { echo $key, '' : ''; foreach($value as $v) { echo $v." "; } }


La forma más rápida de repetir todos los valores json es usar un bucle en bucle, el primer bucle obtendrá todos los objetos y el segundo los valores ...

foreach($data as $object) { foreach($object as $value) { echo $value; } }


La solución más elegante:

$shipments = json_decode(file_get_contents("shipments.js"), true); print_r($shipments);

Recuerde que el archivo json debe estar codificado en UTF-8 sin BOM. Si el archivo tiene BOM, entonces json_decode devolverá NULL.

Alternativamente:

$shipments = json_encode(json_decode(file_get_contents("shipments.js"), true)); echo $shipments;


No puedo creer que tantas personas publiquen respuestas sin leer el JSON correctamente.

Si se $json_a iterar $json_a solo, tiene un objeto de objetos. Incluso si pasa en true como el segundo parámetro, tiene una matriz bidimensional. Si recorres la primera dimensión, no puedes repetir la segunda dimensión de esa manera. Así que esto está mal:

foreach ($json_a as $k => $v) { echo $k, '' : '', $v; }

Para hacer eco de los estados de cada persona, intente esto:

<?php $string = file_get_contents("/home/michael/test.json"); $json_a = json_decode($string, true); foreach ($json_a as $person_name => $person_a) { echo $person_a[''status'']; } ?>


Para iterar sobre una matriz multidimensional, puede usar RecursiveArrayIterator

$jsonIterator = new RecursiveIteratorIterator( new RecursiveArrayIterator(json_decode($json, TRUE)), RecursiveIteratorIterator::SELF_FIRST); foreach ($jsonIterator as $key => $val) { if(is_array($val)) { echo "$key:/n"; } else { echo "$key => $val/n"; } }

Salida:

John: status => Wait Jennifer: status => Active James: status => Active age => 56 count => 10 progress => 0.0029857 bad => 0

ejecutar en el teclado


Prueba esto

$json_data = ''{ "John": { "status":"Wait" }, "Jennifer": { "status":"Active" }, "James": { "status":"Active", "age":56, "count":10, "progress":0.0029857, "bad":0 } }''; $decode_data = json_decode($json_data); foreach($decode_data as $key=>$value){ print_r($value); }


Recorra el JSON con un bucle foreach como pares clave-valor. Realice una comprobación de tipos para determinar si es necesario realizar más bucles.

foreach($json_a as $key => $value) { echo $key; if (gettype($value) == "object") { foreach ($value as $key => $value) { # and so on } } }


Respuesta más estándar:

$jsondata = file_get_contents(PATH_TO_JSON_FILE."/jsonfile.json"); $array = json_decode($jsondata,true); foreach($array as $k=>$val): echo ''<b>Name: ''.$k.''</b></br>''; $keys = array_keys($val); foreach($keys as $key): echo ''&nbsp;''.ucfirst($key).'' = ''.$val[$key].''</br>''; endforeach; endforeach;

Y la salida es:

Name: John Status = Wait Name: Jennifer Status = Active Name: James Status = Active Age = 56 Count = 10 Progress = 0.0029857 Bad = 0


Tienes que dar así:

echo $json_a[''John''][''status'']; echo "<>" echo $json_a[''Jennifer''][''status'']; br inside <>

Lo que da el resultado:

wait active


Tratar

<?php $string = file_get_contents("/home/michael/test.json"); $json_a=json_decode($string,true); foreach ($json_a as $key => $value){ echo $key . '':'' . $value; } ?>


Tratar:

$string = file_get_contents("/home/michael/test.json"); $json = json_decode($string, true); foreach ($json as $key => $value) { if (!is_array($value)) { echo $key . ''=>'' . $value . ''<br />''; } else { foreach ($value as $key => $val) { echo $key . ''=>'' . $val . ''<br />''; } } }


$json_a = json_decode($string, TRUE); $json_o = json_decode($string); foreach($json_a as $person => $value) { foreach($value as $key => $personal) { echo $person. " with ".$key . " is ".$personal; echo "<br>"; } }


<?php $json = ''{ "response": { "data": [{"identifier": "Be Soft Drinker, Inc.", "entityName": "BusinessPartner"}], "status": 0, "totalRows": 83, "startRow": 0, "endRow": 82 } }''; $json = json_decode($json, true); //echo ''<pre>''; print_r($json); exit; echo $json[''response''][''data''][0][''identifier'']; $json[''response''][''data''][0][''entityName''] echo $json[''response''][''status'']; echo $json[''response''][''totalRows'']; echo $json[''response''][''startRow'']; echo $json[''response''][''endRow'']; ?>