Cómo convertir una cadena JSON en una matriz

Resuelto XMen asked hace 54 años • 0 respuestas

Lo que quiero hacer es lo siguiente:

  1. tomando JSON como entrada del área de texto en php
  2. use esta entrada, conviértala a JSON y pásela a php curl para enviar la solicitud.

esto estoy llegando a php desde get of api esta cadena json que quiero pasar a json pero no se está convirtiendo a una matriz

echo $str='{
        action : "create",
        record: {
            type: "n$product",
            fields: {
                n$name: "Bread",
                n$price: 2.11
            },
            namespaces: { "my.demo": "n" }
        }
    }';
    $json = json_decode($str, true);

el código anterior no me devuelve la matriz.

XMen avatar Jan 01 '70 08:01 XMen
Aceptado

Si pasa el JSON en su publicación json_decode, fallará. Las cadenas JSON válidas tienen claves entrecomilladas:

json_decode('{foo:"bar"}');         // this fails
json_decode('{"foo":"bar"}', true); // returns array("foo" => "bar")
json_decode('{"foo":"bar"}');       // returns an object, not an array.
RickN avatar Sep 22 '2011 08:09 RickN

Prueba esto:

$data = json_decode($your_json_string, TRUE);

el segundo parámetro convertirá la cadena json decodificada en matrices asociativas.

sepidol avatar Sep 22 '2011 08:09 sepidol

Si obtiene la cadena JSON del formulario usando $_REQUEST, $_GETo $_POSTnecesitará usar la función html_entity_decode(). No me di cuenta de esto hasta que hice una var_dumpcomparación de lo que había en la solicitud versus lo que copié en una echodeclaración y noté que la cadena de solicitud era mucho más grande.

Manera correcta:

$jsonText = $_REQUEST['myJSON'];
$decodedText = html_entity_decode($jsonText);
$myArray = json_decode($decodedText, true);

Con errores:

$jsonText = $_REQUEST['myJSON'];
$myArray = json_decode($jsonText, true);
echo json_last_error(); //Returns 4 - Syntax error;
jbeauchamp avatar Jan 28 '2013 04:01 jbeauchamp

Utilice json_decode($json_string, TRUE)la función para convertir el objeto JSON en una matriz.

Ejemplo:

$json_string   = '{"a":1,"b":2,"c":3,"d":4,"e":5}';

$my_array_data = json_decode($json_string, TRUE);

NOTA: El segundo parámetro convertirá la cadena JSON decodificada en una matriz asociativa.

============

Producción:

var_dump($my_array_data);

array(5) {

    ["a"] => int(1)
    ["b"] => int(2)
    ["c"] => int(3)
    ["d"] => int(4)
    ["e"] => int(5)
}
Arslan Ramay avatar Jul 11 '2015 09:07 Arslan Ramay

Si obtiene una cadena json de la URL usando file_get_contents, siga los pasos:

$url = "http://localhost/rest/users";  //The url from where you are getting the contents
$response = (file_get_contents($url)); //Converting in json string
 $n = strpos($response, "[");
$response = substr_replace($response,"",0,$n+1);
$response = substr_replace($response, "" , -1,1);
print_r(json_decode($response,true));
piyush avatar Sep 07 '2012 14:09 piyush