Lo que quiero hacer es lo siguiente:
- tomando JSON como entrada del área de texto en php
- use esta entrada y conviértala a JSON y páselo a php curl para enviar la solicitud.
estoy llegando a php desde get de api esta cadena json que quiero pasar a json pero no se está convirtiendo en 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.
then it is not giving
¿No dar qué? ¿Toma una cadena con formato JSON de textarea y la convierte a JSON?Respuestas:
Si le pasa el JSON en su publicación
json_decode
, fallará. Las cadenas JSON válidas tienen claves entre comillas:fuente
json_decode()
, regresaráNULL
si su JSON no es válido (por ejemplo, no hay claves entre comillas). Eso es lo que dice la documentación y eso es lo que devuelve mi instalación de PHP 5.2. ¿Está utilizando una función distinta de la oficial, incorporadajson_decode()
? ¿Quévar_dump(json_decode($str, true));
devuelve?Prueba esto:
el segundo parámetro convertirá la cadena json decodificada en matrices asociativas.
fuente
Si usted está recibiendo la cadena JSON desde el formulario utilizando
$_REQUEST
,$_GET
o$_POST
la que tendrá que utilizar la funciónhtml_entity_decode()
. No me di cuenta de esto hasta que hice unavar_dump
de lo que estaba en la solicitud versus lo que copié y laecho
declaración y noté que la cadena de solicitud era mucho más grande.Forma correcta:
Con errores:
fuente
Use la
json_decode($json_string, TRUE)
función para convertir el objeto JSON en una matriz.Ejemplo:
NOTA: El segundo parámetro convertirá la cadena JSON decodificada en una matriz asociativa.
===========
Salida:
fuente
Si obtiene una cadena json de la URL usando
file_get_contents
, siga los pasos:fuente
su cadena debe estar en el siguiente formato:
Salida:
fuente
Puede convertir json Object en Array & String.
fuente
Si alguna vez necesita convertir archivos o estructuras JSON en matrices de estilo PHP, con todos los niveles de anidación, puede usar esta función. Primero, debe json_decode ($ yourJSONdata) y luego pasarlo a esta función. Producirá en la ventana de su navegador (o consola) las matrices de estilo PHP correctas.
https://github.com/mobsted/jsontophparray
fuente
Creo que esto debería funcionar, es solo que las claves también deben estar entre comillas dobles si no son números.
fuente
esta es mi solución: cadena json
$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}]"
entonces uso json_decode dos veces así:
y el resultado es:
fuente
Asegúrese de que la cadena esté en el siguiente formato JSON, que es algo como esto:
De lo contrario, puede agregar
"responsetype => json"
sus parámetros de solicitud.Luego use
json_decode($response,true)
para convertirlo en una matriz.fuente
responseType
propiedad se utiliza para determinar el tipo de datos en la respuesta a la solicitud. Sin embargo, el problema es que el cuerpo de la solicitud contiene datos que no están en la forma correcta. Su respuesta por lo tanto no se ajusta al contexto dado.Puede cambiar una cadena a JSON de la siguiente manera y también puede recortar, pelar en cadena si lo desea,
fuente
Utilice este convertidor, no falla en absoluto: Services_Json
fuente
fuente