parse json_decode ejemplo convert array php arrays json

php - json_decode - Cómo convertir cadena JSON a matriz



json_decode javascript (14)

Asegúrese de que la cadena esté en el siguiente formato JSON, que es algo como esto:

{"result":"success","testid":"1"} (with " ") .

De lo contrario, puede agregar "responsetype => json" en sus parámetros de solicitud.

Luego use json_decode($response,true) para convertirlo en una matriz.

Lo que quiero hacer es lo siguiente:

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

este m llegar a php desde obtener api esta cadena json que quiero pasar a json pero no está convirtiendo a 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 está regresando matriz.


Prueba esto:

$data = json_decode($your_json_string, TRUE);

el segundo parámetro convertirá la cadena json descodificada en una matriz asociativa.


Puede cambiar una cadena a JSON de la siguiente manera y también puede recortar, tirar de la cadena si lo desea,

$str = ''[{"id":1, "value":"Comfort Stretch"}]''; //here is JSON object $filters = json_decode($str); foreach($filters as $obj){ $filter_id[] = $obj->id; } //here is your array from that JSON $filter_id;


Si alguna vez necesita convertir archivos o estructuras JSON a matrices de estilo PHP, con todos los niveles de anidamiento, puede usar esta función. Primero, debe json_decode ($ yourJSONdata) y luego pasarlo a esta función. Saldrá a la ventana de su navegador (o consola) las matrices correctas de estilo PHP.

https://github.com/mobsted/jsontophparray


Si obtiene la cadena JSON del formulario usando $_REQUEST , $_GET , o $_POST necesitará la función html_entity_decode() . No me di cuenta de esto hasta que hice un var_dump de lo que estaba en la solicitud frente a lo que copié en echo declaración de echo 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;


Si obtiene una cadena json de URL utilizando 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));


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

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.


Utilice este convertidor, no falla en absoluto: Services_Json

// create a new instance of Services_JSON $json = new Services_JSON(); // convert a complexe value to JSON notation, and send it to the browser $value = array(''foo'', ''bar'', array(1, 2, ''baz''), array(3, array(4))); $output = $json->encode($value); print($output); // prints: ["foo","bar",[1,2,"baz"],[3,[4]]] // accept incoming POST data, assumed to be in JSON notation $input = file_get_contents(''php://input'', 1000000); $value = $json->decode($input); // if you want to convert json to php arrays: $json = new Services_JSON(SERVICES_JSON_LOOSE_TYPE);


Utilice la función json_decode($json_string, TRUE) 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 descodificada en una matriz asociativa.

===========

Salida:

var_dump($my_array_data); array(5) { ["a"] => int(1) ["b"] => int(2) ["c"] => int(3) ["d"] => int(4) ["e"] => int(5) }


esta es mi solución: json string $columns_validation = string(1736) "[{"colId":"N_ni","hide":true,"aggFunc":null,"width":136,"pivotIndex":null,"pinned":null,"rowGroupIndex":null},{"colId":"J_2_fait","hide":true,"aggFunc":null,"width":67,"pivotIndex":null,"pinned":null,"rowGroupIndex":null}]"

así que uso json_decode dos veces así:

$js_column_validation = json_decode($columns_validation); $js_column_validation = json_decode($js_column_validation); var_dump($js_column_validation);

y el resultado es:

array(15) { [0]=> object(stdClass)#23 (7) { ["colId"]=> string(4) "N_ni" ["hide"]=> bool(true) ["aggFunc"]=> NULL ["width"]=> int(136) ["pivotIndex"]=> NULL ["pinned"]=> NULL ["rowGroupIndex"]=> NULL } [1]=> object(stdClass)#2130 (7) { ["colId"]=> string(8) "J_2_fait" ["hide"]=> bool(true) ["aggFunc"]=> NULL ["width"]=> int(67) ["pivotIndex"]=> NULL ["pinned"]=> NULL ["rowGroupIndex"]=> NULL }



su cadena debe estar en el siguiente formato:

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

Salida:

Array ( [action] => create [record] => Array ( [type] => n$product [fields] => Array ( [n$name] => Bread [n$price] => 2.11 ) [namespaces] => Array ( [my.demo] => n ) ) )


$data = json_encode($result, true); echo $data;


<?php $str=''{ "action" : "create", "record" : { "type": "$product", "fields": { "name": "Bread", "price": "2.11" }, "namespaces": { "my.demo": "n" } } }''; echo $str; echo "<br>"; $jsonstr = json_decode($str, true); print_r($jsonstr); ?>

Creo que esto debería funcionar, es solo que las teclas también deberían estar entre comillas dobles si no son números.